VB.NET将xml节点插入现有的XML文档中

时间:2009-03-26 18:49:17

标签: .net xml vb.net

我只是想合并2个xml文档(将节点从一个添加到另一个)。我做了一些谷歌搜索,并尝试了一些事情,但我总是得到相同的错误“要插入的节点来自不同的文档上下文”

我确信我错过了一些简单的东西,看起来这应该不会那么困难。

这是我的代码:

    Dim xmlDoc482 As XmlDocument = New XmlDocument
    Dim xmlDoc486 As XmlDocument = New XmlDocument
    Dim xmlDoc490 As XmlDocument = New XmlDocument

    xmlDoc482.LoadXml(strSettlement482)
    xmlDoc486.LoadXml(strSettlement486)
    xmlDoc490.LoadXml(strSettlement490)

    Dim xmlSummarysNode490 As XmlNode = xmlDoc486("Summarys")
    Dim xmlSummaryNode482 As XmlNode = xmlDoc482("Summarys").LastChild
    Dim xmlSummaryNode486 As XmlNode = xmlDoc486("Summarys").LastChild

    Dim nodeDest As XmlNode
    nodeDest = xmlDoc490.ImportNode(xmlSummaryNode482, True)
    xmlSummarysNode490.AppendChild(nodeDest)

    nodeDest = xmlDoc490.ImportNode(xmlSummaryNode486, True)
    xmlSummarysNode490.AppendChild(nodeDest)

4 个答案:

答案 0 :(得分:2)

尝试将导入的节点附加到DocumentElement而不是行 Dim xmlSummarysNode490 As XmlNode = xmlDoc486(“Summarys”)。

xmlDoc490.DocumentElement.AppendChild(nodeDest)

您也可以在插入之前尝试使用 CloneNode()而不是 ImportNode()

最后帮助我合并的东西是构建一个简单的容器xml,然后将子文档全部转储到其中。

xmlMerged.LoadXML("<set></set>")

所以它变成了:

<set>
 <Summary>....</Summary>
 <Summary>....</Summary>
 ...
</set>

答案 1 :(得分:2)

您可以创建辅助函数(甚至更好的扩展方法)来创建XML节点的副本,但将节点的关联文档更改为要合并到的文档。你也可以尝试使用反射,但这有点混乱......

答案 2 :(得分:1)

这是一种将2 xmls与同一模式合并的简单方法:

Dim x1 As New Dataset
x1.ReadXml(path1)
Dim x2 As New Dataset
x2.ReadXml(path2)

x1.Merge(x2)
x1.WriteXml(path3)

你可以根据自己的情况调整它。

答案 3 :(得分:0)

这很有效,除了我的愚蠢,愚蠢的错误

此:

Dim xmlSummarysNode490 As XmlNode = xmlDoc486("Summarys")

应该是这个:

Dim xmlSummarysNode490 As XmlNode = xmlDoc490("Summarys")

必须使用您要添加的文档添加元素/节点。