使用XmlNode.AppendChild
方法时,它是否真的附加到现有文件中,还是写入一个全新的(附加)文件?
微软quite unclear就是这个。
答案 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
。