2012-02-13 124 views
0

我有一個xml文檔,並希望在其底部追加另一個xml。在.NET中使用xml類,做到這一點的最快方法是什麼(在3.5中)?將xml文檔追加到現有的xml文檔的底部

謝謝

+0

我嘗試了一些與節點等工作的東西,但喬恩的建議(下面)是更可讀和明顯的意圖。 – dotnetdev 2012-02-13 10:34:34

回答

1

最快最快,最快還是最快?例如:

XDocument doc1 = XDocument.Load(...); 
XDocument doc2 = XDocument.Load(...); 

// Copy the root element of doc2 to the end of doc1 
doc1.Root.Add(doc2.Root); 
doc1.Save(...); 

或者,你可以希望

// Copy the *contents* of the root element of doc2 to the end of doc1 
doc1.Root.Add(doc2.Root.Descendants()); 

如果你能更精確地瞭解您的需求,我們也許能幫助更多。請注意,XML文檔只能有一個根元素,因此您不能只將一個文檔放在另一個文檔之後。

+0

我的意思是效率明智,但這是一個優雅的解決方案。 – dotnetdev 2012-02-13 10:34:52

+0

@dotnetdev:那麼試試看,看看它是否足夠有效,你想做什麼。在測試簡單版本之前,不要開始編寫更高效但更少可讀的代碼。 – 2012-02-13 10:36:13

1

我懷疑你將能夠使用XML類來做到這一點。 XML庫通常旨在防止您創建格式錯誤的XML,並且兩個XML文檔的連接將會很差,因爲文檔節點將有兩個子元素。

如果.Net庫確實允許你這樣做,我建議你將它作爲一個錯誤提升。

0
var xml = new XmlDocument(); 
xml.AppendChild(...); 
xml.PrependChild(...); 
0

如果你真的要添加的最快方法是逐行讀取文件的第一行,並把它添加到第二個文件第二根節點。這是一個非常骯髒的方式,你會得到一個無效的 xml文件!

System.IO.StreamWriter file1 = System.IO.File.AppendText(path); 
System.IO.StreamReader file2 = new System.IO.StreamReader(path2) 

while(!file2.EndOfStream) 
{ 
    file1.WriteLine(file2.ReadLine()); 
} 

file1.Close(); 
file2.Close(); 

我甚至不喜歡這個解決方案!