XmlNode.AppendChild,它是否真的附加?

时间:2013-04-13 19:37:14

标签: c# xml vb.net append

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

微软quite unclear就是这个。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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树(更新的一个)在原始XML树下面re-written

相关问题