我想通過在C#中現有Xmldocument
的末尾插入第二個XML文檔來合併兩個XmlDocument
。這是如何完成的?如何在C#中合併兩個XmlDocuments
回答
事情是這樣的:
foreach (XmlNode node in documentB.DocumentElement.ChildNodes)
{
XmlNode imported = documentA.ImportNode(node, true);
documentA.DocumentElement.AppendChild(imported);
}
請注意,這會忽略文檔B的文檔元素本身 - 所以如果它具有不同的元素名稱或要複製的屬性,則需要確切地確定要執行的操作。
編輯:如果按您的意見,您要嵌入文件A內部文檔B的整個,這是比較容易:
XmlNode importedDocument = documentA.ImportNode(documentB.DocumentElement, true);
documentA.DocumentElement.AppendChild(importedDocument);
這仍然會忽略的東西像文檔的XML聲明B如果有一個 - 我不知道如果您試圖將文檔本身作爲不同文檔的節點導入,並且它包含XML聲明會發生什麼情況......但是我懷疑這會做你想做的事。
壞消息。只要xml文檔只能有一個根元素,就不能在第二個文檔的末尾放置一個文檔的內容。也許this是你在找什麼?它顯示瞭如何輕鬆就可以使用LINQ到XML
或者,如果你正在使用XmlDocuments你可以嘗試讓這樣的合併XML文件:
XmlDocument documentA;
XmlDocument documentB;
foreach(var childNode in documentA.DocumentElement.ChildNodes)
documentB.DocumentElement.AppendChild(childNode);
我想使用System.Xml添加b XmlDocument作爲Xmldocument – 2010-08-09 12:49:32
在另一個XML文檔的末尾插入一個完整的XML文檔確實會產生無效的XML。 XML要求有一個且只有一個「文檔」元素。因此,假設您的文件如下:
A.XML
<document>
<element>value1</element>
<element>value2</element>
</document>
B.XML
<document>
<element>value3</element>
<element>value4</element>
</document>
通過只是一個附加在的結束得到的文件其他:
<document>
<element>value1</element>
<element>value2</element>
</document>
<document>
<element>value3</element>
<element>value4</element>
</document>
無效的XML。
假設,相反,這兩個文件共享一個共同的文檔元素,你想從B中的文檔元素的子元素插入到的文檔元素,你可以使用以下命令:
var docA = new XmlDocument();
var docB = new XmlDocument();
foreach (var childEl in docB.DocumentElement.ChildNodes) {
var newNode = docA.ImportNode(childEl, true);
docA.DocumentElement.AppendChild(newNode);
}
這將生成以下文檔給出我上面的示例:
<document>
<element>value1</element>
<element>value2</element>
<element>value3</element>
<element>value4</element>
</document>
的節點 – MacGyver 2016-01-14 20:53:28
這是合併xml文檔最快最乾淨的方法。
XElement xFileRoot = XElement.Load(file1.xml);
XElement xFileChild = XElement.Load(file2.xml);
xFileRoot.Add(xFileChild);
xFileRoot.Save(file1.xml);
- 1. 在C#/。NET中合併兩個圖像
- 2. 在C#中合併兩個DateTime類型
- 3. 在C中合併兩個對象#
- 4. 在C中合併兩個ArrayList#
- 5. 如何在PHP中合併兩個類?
- 6. 如何在Java中「合併」兩個URI?
- 7. 如何在Java中合併兩個GIF?
- 8. 如何在iPhone中合併兩個UITextView?
- 9. 如何將Objective-C中的兩個數組合並在一起?
- 10. 如何在C#中使用Facebook SDK合併兩個查詢?
- 11. 如何在JSON.NET中合併/合併兩個JArrays
- 12. 如何在Android中鏈接/合併/合併兩個聯繫人?
- 13. 合併兩個C++封裝
- 14. 合併兩個地圖C++
- 15. 如何合併兩個priority_queue?
- 16. 如何合併兩個FBO?
- 17. 如何合併兩個表?
- 18. 如何合併兩個Javascript
- 19. 如何合併兩個Object成一個在C#
- 20. 合併兩個列表在C#.NET
- 21. 合併兩個矢量,而不在C++
- 22. 如何合併兩個表在SSIS
- 23. 如何合併SQL中的兩個表?
- 24. 如何合併java中的兩個BST?
- 25. 如何合併兩個Ruby集合?
- 26. 我如何合併兩個字典在C#
- 27. 我如何合併兩個信號在C#
- 28. 如何合併兩個DataTable與總和在C#
- 29. 如何合併C#中的兩個字典與重複項
- 30. 在MongoDB中合併兩個集合
我試着編輯你的問題,使其更清楚。我希望我沒有改變你想要問的意思。 – 2010-08-09 12:56:36
Thanx。 我找到了一個沒有循環的解決方案: XmlNode footerNode = a.CreateElement(「ADD」); footerNode.InnerXml = b.SelectSingleNode(「/ root」)。InnerXml; a.DocumentElement.AppendChild(footerNode); – 2010-08-09 13:00:31
請注意,這個網站不是一個代碼寫作服務。如果 你[編輯]你的問題來描述你已經嘗試過如此 遠,你卡住的地方,那麼我們可以嘗試幫助 具體問題。你還應該閱讀[問]。 – 2016-04-01 15:13:04