【问题标题】:VB.NET inserting xml nodes into an existing XML documentVB.NET 将 xml 节点插入现有的 XML 文档
【发布时间】:2009-03-26 18:49:16
【问题描述】:

我只是想合并 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)

【问题讨论】:

  • FWIW后期,summary的复数形式是summaries。

标签: .net xml vb.net


【解决方案1】:

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

xmlDoc490.DocumentElement.AppendChild(nodeDest)

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

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

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

这样就变成了:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这是一种将 2 个具有相同架构的 xml 合并的简单方法:

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

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

      【讨论】:

        【解决方案4】:

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

        这个:

        Dim xmlSummarysNode490 As XmlNode = xmlDoc486("Summarys")
        

        应该是这样的:

        Dim xmlSummarysNode490 As XmlNode = xmlDoc490("Summarys")
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-19
          • 2013-02-22
          • 2020-10-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多