我有兩個XmlDocuments,它們都具有指定的名稱空間屬性。兩份文件都有相同的結構,但包含不同的數據。我似乎無法從一個文檔中獲取特定節點樹,並將其添加到第二個文檔中同一個節點樹的末尾。這裏是我的兩個文件的例子:將XML節點添加到XmlDocument中的特定節點
文件#1:
<?xml version="1.0"?>
<rootnode xmlns="http://www.mynamespace.com/Service/2012-06-18">
<node0>
</node0>
<node1>
<Item>
<Id>1</Id>
....
</Item>
<Item>
<Id>2</Id>
....
</Item>
<Item>
<Id>3</Id>
....
</Item>
</node1>
</rootnode>
文檔#2
<?xml version="1.0"?>
<rootnode xmlns="http://www.mynamespace.com/Service/2012-06-18">
<node0>
</node0>
<node1>
<Item>
<Id>4</Id>
....
</Item>
<Item>
<Id>5</Id>
....
</Item>
<Item>
<Id>6</Id>
....
</Item>
</node1>
</rootnode>
我希望實現什麼目標:
<?xml version="1.0"?>
<rootnode xmlns="http://www.mynamespace.com/Service/2012-06-18">
<node0>
</node0>
<node1>
<Item>
<Id>1</Id>
....
</Item>
<Item>
<Id>2</Id>
....
</Item>
<Item>
<Id>3</Id>
....
</Item>
<Item>
<Id>4</Id>
....
</Item>
<Item>
<Id>5</Id>
....
</Item>
<Item>
<Id>6</Id>
....
</Item>
</node1>
</rootnode>
我試圖將所有<Item>
節點從一個文檔添加到另一個文檔,同時保持所有其他節點的結構。任何一個文檔中都有任意數量的<Item>
節點。每個<Item>
節點都有深度嵌套的描述該項目的節點數量。
Dim dstdoc As XmlDocument = myobject1.XmlDocument
Dim srcdoc As XmlDocument = myobject2.XmlDocument
Dim nsmgr As New XmlNamespaceManager(New NameTable)
nsmgr.AddNamespace("ns", "http://www.mynamespace.com/Service/2012-06-18")
Dim xpath As String = "ns:rootnode/ns:node1//ns:Item"
Dim copiedNode As XmlNode = dstdoc.ImportNode(_
srcdoc.SelectSingleNode(xpath, nsmgr), True)
dstdoc.DocumentElement().AppendChild(copiedNode)
我當然知道這是錯誤的......我嘗試了幾種不同的方法。這種特殊的方法將所有<Item>
節點添加到目標文檔,但它將它們添加到文檔的最底部,而不是在最後的<Item>
之後。
有人請告訴我如何將XmlDocument的特定節點樹添加到另一個文檔中的特定位置?同樣,涉及到一個名稱空間,並且每個節點下都有嵌套的節點/元素。
注意:<Id>
節點有示例數據僅顯示唯一性。我永遠不會指望任何一種編號。每個<Item>
節點的順序完全不重要。我只是假設在目標文檔的最後一個節點之後添加額外的<Item>
節點將是最容易的。
的FOR/NEXT循環中,我得到「要插入的節點來自不同的文檔上下文。「當'destElement.AppendChild(導入)'被執行時。我可以通過你的代碼看到你讓我走在正確的軌道上。我明白我現在做錯了什麼。你能理解這個錯誤嗎?謝謝!! – rwkiii
對不起雅各布,你的代碼工作。問題在我身上。嘿,再次感謝你。 – rwkiii