2014-10-22 48 views
0

我一直在使用以下SO,How to merge two XmlDocuments in C#,嘗試將兩個示例xml文件合併爲一個。從本質上講這裏有我的兩個XML文件結合了兩個xml_docs C#xmlDocument

test1.xml:

<root> 
    <Name> 
     <id>4</id> 
     <First_name>Tony</First_name> 
     <last_name>""</last_name> 
    </Name> 
    <Name> 
     <id>6</id> 
     <First_name>Donny</First_name> 
     <last_name>Test</last_name> 
     <middle_name>Ward</middle_name> 
    </Name> 
</root> 

而且test2.xml

<root> 
    <Name> 
     <id>1</id> 
     <First_name>Nick</First_name> 
     <last_name>Tester</last_name> 
    </Name> 
    <Name> 
     <id>2</id> 
     <First_name>Lauren</First_name> 
     <last_name>MsTester</last_name> 
    </Name> 
</root> 

我使用這段代碼就合併成一個文件,但該過程實際上並沒有把它們合併我有點知道xmlDocument類,仍然試圖正確導航這個問題。

代碼:

XmlDocument xmlreader1 = new XmlDocument(); 
xmlreader1.Load("C:\\Temp\\test1.xml"); 
XmlDocument xmlreader2 = new XmlDocument(); 
xmlreader2.Load("C:\\Temp\\test2.xml"); 

foreach (XmlNode node in xmlreader2.DocumentElement.ChildNodes) 
{ 
    XmlNode importedDocument = xmlreader1.ImportNode(node, true); 
    xmlreader1.DocumentElement.AppendChild(importedDocument); 
} 

我相信這是正確的紮根的每個子節點(在這種情況下<name>)從test2.xml並追加它test1.xml。我也試過:

XmlNode importedDocument = xmlreader1.ImportNode(xmlreader2.DocumentElement, true); 
xmlreader1.DocumentElement.AppendChild(importedDocument); 

無濟於事任何建議將不勝感激。

+0

您是否特別*需要*使用'XmlDocument'? LINQ to XML通常更簡單易用。此外,請仔細格式化您的文章 - 查看預覽,只有在問題看起來如果您試圖回答時才希望它看起來如何,請提交。 – 2014-10-22 06:06:48

回答

0

這不是完全清楚什麼合併操作,您需要執行 - 但是如果你只是需要複製根節點的子元素,這是非常簡單的使用LINQ到XML:

XDocument doc1 = XDocument.Load("test1.xml"); 
XDocument doc2 = XDocument.Load("test2.xml"); 
doc1.Root.Add(doc2.Root.Elements()); 
doc1.Save("test3.xml"); 

這將不執行任何實際的合併雖然 - 如果您在兩個文件中都具有相同ID的元素,則最終將在結果中包含兩個元素,而不是一個合併元素。

個人而言,我總是喜歡使用LINQ to XML在舊XmlDocument API - 我強烈建議使用它,當你有機會做到這一點。