代码之家  ›  专栏  ›  技术社区  ›  Dan Williams

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

  •  1
  • Dan Williams  · 技术社区  · 16 年前

    我只是尝试合并两个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 回复  |  直到 16 年前
        1
  •  2
  •   Mister Lucky    16 年前

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

    xmlDoc490.DocumentElement.AppendChild(nodeDest)
    

    您也可以尝试使用 而不是 在插入之前。

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

    因此,它变成:

    <set>
     <Summary>....</Summary>
     <Summary>....</Summary>
     ...
    </set>
    
        2
  •  2
  •   Zach Johnson    16 年前

    您可以创建一个helper函数(或者更好的扩展方法)来创建XML节点的副本,但将节点的关联文档更改为要合并到的文档。你也可以尝试使用反射,但那会有点混乱。。。

        3
  •  1
  •   Jim Counts    16 年前

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

        4
  •  0
  •   Dan Williams    16 年前

    这很好,除了我愚蠢的打字错误

    这:

    Dim xmlSummarysNode490 As XmlNode = xmlDoc486("Summarys")
    

    Dim xmlSummarysNode490 As XmlNode = xmlDoc490("Summarys")
    

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