Почему мой XmlDocument.Save () завершается с ошибкой «Ресурс используется другим процессом»? - PullRequest
4 голосов
/ 07 июля 2011

Так что мне нужно открыть 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!

1 Ответ

4 голосов
/ 07 июля 2011

Я сталкивался с этим раньше.Вместо того, чтобы передавать путь непосредственно в 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!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...