2011-07-06 3 views
4

그래서 XML 문서를 열고 파일에 기록한 다음 파일을 다시 디스크에 저장해야합니다. 저장하기 전에 스트림이 닫혀 있는지 확인하려면 파일 스트림을 사용하여 XmlDocument를로드해야합니까?내 XmlDocument.Save()가 "다른 프로세스에서 사용중인 리소스"와 함께 실패하는 이유는 무엇입니까?

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

는'XmlDocument'가 – Earlz

+0

에서 System.Xml 좀 짜증나입니다 파일을 열어 유지 (따라서 고정) 대신 부하를 직접 경로를 전달하는, 당신은 부하 후 폐기 할 수있는 XmlReader를을 만들 그러나 그것은 나쁜 것이 아닙니다. finally 블록에서 리더를 닫습니다. 파일이 분명히 다른 곳에서 사용되고 있습니다. 아마도 다른 웹 요청 스레드에 있습니다. –

답변

4

나는 이것들을 전에 실행했습니다. ,

그것은처럼 보이는
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! 
관련 문제