2010-01-15 79 views
1

是否有可能在C#中追加一個XElement到一個已經存在的xml文件,而不保存整個xml,而只是新的元素?將XElement附加到xml文件而不保存整個文件。 C#

所以我不想這樣,因爲它會將整個xml寫入磁盤。

XDocument document = new XDocument(); 
document.Load("filename"); 
document.Root.add(new XElement("name", "content")); 
document.save("filename"); 

在此先感謝。

+0

您想要保存什麼? – Welbog 2010-01-15 19:28:19

+0

我想將XElement附加到xml文件。就像傑森威廉姆斯在下一篇文章中所寫的那樣:) – 2010-01-15 19:34:57

回答

2

是的,但只能得到比你的例子更低的水平。

在一個XML文件中,你只能有一個根元素,所以如果你簡單地附加到文件來添加一個新元素,你將創建一個破損的XML文件。

但是,您可以從文件的末尾讀取並解析它以查找根元素的結束標記的起點(這會給您一個文件位置)。然後,您可以打開文件作爲FileStream進行寫入,將寫入位置設置爲根端結束標記的開頭,然後像平常一樣將新元素寫入流中。然後,您必須通過追加文本來「手動」完成文件以添加新的根端標籤。

+0

我明白了,所以這是做我所問的唯一方法嗎?有沒有更簡單的(1魔術電話)來做到這一點? – 2010-01-15 19:36:25

+0

如果您想避免重寫整個文件,請不要使用。 (可能在某處有一個奇怪的.net事物可能允許你做這樣的事情,但是不太可能) – 2010-01-15 20:00:12