为什么我的XmlDocument.Save()失败,“资源正在被另一个进程使用”

本文关键字:另一个 进程 资源 Save XmlDocument 我的 失败 为什么 | 更新日期: 2023-09-27 18:01:36

所以我需要打开一个XML文档,写入它,然后将文件保存回磁盘。我是否需要使用文件流加载XmlDocument以确保在保存之前关闭该流?

 string xmlPath = Server.MapPath("../statedata.xml");
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load(xmlPath);
            XmlNode node = xmlDocument.SelectSingleNode("//root/state");
            node.InnerText = string.Format("org.myorg.application.init = {0};",stateJson);
            xmlDocument.Save(xmlPath); //blows up!

为什么我的XmlDocument.Save()失败,“资源正在被另一个进程使用”

我以前遇到过这种情况。与其将路径直接传递给Load,不如创建一个XmlReader,可以在加载后处理它:

string xmlPath = Server.MapPath("../statedata.xml");
XmlDocument xmlDocument = new XmlDocument();  
using(XmlReader reader = XmlReader.Create(xmlPath)) 
   xmlDocument.Load(reader);         
XmlNode node = xmlDocument.SelectSingleNode("//root/state");
node.InnerText = string.Format("org.myorg.application.init = {0};",stateJson);    
xmlDocument.Save(xmlPath); //blows up!