0

使用XmlNode.AppendChild方法时,它是从字面上附加到现有文件还是写入一个全新的(附加的)文件?

微软对此很不清楚

4

2 回答 2

2

正如@Alexei 所回答的那样,AppendChild只附加加载到内存中的 XML 树。

但如果您询问XmlDocument.Save()方法,它将把内存中的完整 XML 树重写为输出流。

这可以用这段代码来验证——

using (FileStream fs = new FileStream(@"E:\Sample.xml", 
        FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
{
     XmlDocument xmlDoc = new XmlDocument();
     xmlDoc.Load(fs);

     // Do same changes, like AppendChild on root element

     xmlDoc.Save(fs);
}

再次加载文件时,您将看到完整的 XML 树(更新后的)位于re-written原始 XML 树的下方。

于 2013-04-13T19:55:31.677 回答
2

XmlNode.AppendChild不附加或修改任何文件。它修改加载在内存中的 Xml 树。

如果要修改文件,则需要保存结果(如文章中所述)。

于 2013-04-13T19:40:24.600 回答