VB.NET l’inserimento di nodi xml in un documento XML esistente

Sto semplicemente cercando di unire 2 documenti xml (con l’aggiunta di nodi da uno all’altro). Ho fatto alcune ricerche su Google, e provato un paio di cose, ma ricevo sempre lo stesso errore “Il nodo da inserire è da un documento diverso contesto”

Sono sicuro che mi sto perdendo qualcosa di semplice, sembra proprio come questa non dovrebbe essere difficile.

Ecco il mio codice:

    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 in questo stadio, il plurale di sintesi è di sintesi.
InformationsquelleAutor Dan Williams | 2009-03-26



4 Replies
  1. 2

    Provare ad aggiungere il importate nodi al get-documentelement al posto della linea
    Dim xmlSummarysNode490 Come XmlNode = xmlDoc486(“Summarys”).

    xmlDoc490.DocumentElement.AppendChild(nodeDest)

    Si potrebbe anche provare a utilizzare il CloneNode() invece di ImportNode() prima dell’inserimento.

    Finalmente qualcosa che mi ha aiutato nella fusione, in passato, era quello di costruire un semplice contenitore xml quindi il dump i bambini tutti i documenti in esso.

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

    Quindi diventa:

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

    Si potrebbe creare una funzione di supporto (o, meglio ancora, un metodo di estensione) per creare una copia del nodo XML, ma cambia il nodo del documento associato al documento che si desidera unire. Si potrebbe anche provare a utilizzare la riflessione, ma che diventa di tipo di disordine…

  3. 1

    Qui è un modo semplice per unire 2 xmls con lo stesso schema:

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

    Probabilmente si può adattare alla propria situazione.

  4. 0

    Questo funziona alla grande, solo il mio stupido, stupido errore di battitura

    Questo:

    Dim xmlSummarysNode490 As XmlNode = xmlDoc486("Summarys")

    Dovrebbe essere Questo:

    Dim xmlSummarysNode490 As XmlNode = xmlDoc490("Summarys")

    Un elemento/nodo deve essere aggiunto con il documento che si sta aggiungendo a.

Lascia un commento