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

本文关键字:异常 XML 保存 使用 | 更新日期: 2023-09-27 18:35:15

我正在尝试通过使用 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>

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

如果您确定该文件仅由您的进程使用,则只需将其读入字节数组,关闭该文件,然后再次保存:(我在此示例中使用 .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);