使用c#保存XML时发生异常

时间:2014-12-23 11:03:44

标签: c# xml ioexception

我正在尝试通过使用c#添加新的子节点来更新现有的XML文件。 如果我用新名称保存它,但是我想要更新同一个文件,并且在执行此操作时,得到以下异常:

  

System.IO.IOException:进程无法访问该文件...因为它是   被另一个进程使用

这是我的代码:(我正在尝试添加新的默认节点)

XmlDocument doc = new XmlDocument();
string path = @"C:\Debug\default.xml";
doc.Load(path);
XmlNode NName = doc.CreateElement("default");

XmlNode SNO = doc.CreateElement("SNo");
SNO.InnerText = "2";
NName.AppendChild(SNO);

doc.DocumentElement.AppendChild(NName);

doc.Save(path);

也是XML文件:

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <default>
    <SNo>1</SNo>
  </default>
</NewDataSet>

1 个答案:

答案 0 :(得分:0)

如果您确定该文件仅供您的进程使用,则只需将其读入字节数组,关闭该文件,然后再次保存: (我对此示例使用 .net 4.0 ):

 XmlDocument doc = new XmlDocument();
 byte[] content = File.ReadAllBytes(path);
 using (var memStream = new MemoryStream(content))
 {
     doc.Load(memStream);
 }
 XmlNode NName = doc.CreateElement("default");

 XmlNode SNO = doc.CreateElement("SNo");
 SNO.InnerText = "2";
 NName.AppendChild(SNO);

 doc.DocumentElement.AppendChild(NName);

 doc.Save(path);