2013-04-13 12 views

回答

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树下面。

2

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

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

+0

我对这个问题并不完全清楚。我的意思是,一旦'.Save()'被调用,它会追加还是重写整个文件? –

相关问题