webForumDet fria alternativet

XML. Retunera en nod med undernoder

.NETur .NET

3 svar · 482 visningar · startad av trashhash

Medlem sedan apr. 200730 inlägg
Frågan#1

Hej, hur retunerar jag lättas en delmängd ifrån ett XML-träd. Jag kör XmlDocument.SelectNodes(XPath) Och får då XmlNodeList som jag sedan försöker loopa igenom och importera/appenda till ett nytt XMLDocument för att sedan retunera .innerXML. Men detta ger mig fel, tmpNode är Nothing/Null

        Dim list As XmlNodeList = GetNodesByXpath("//")
        Dim emu As IEnumerator = list.GetEnumerator
        Dim x As New XmlDocument
        While emu.MoveNext
            Dim xn As XmlNode = CType(emu.Current, XmlNode)
            Dim tmpNode = x.ImportNode(xn, True)
            x.DocumentElement.AppendChild(tmpNode) 'FEL går inte att appenda Nothing
        End While

Tacksam för svar.

Medlem sedan dec. 19996 721 inlägg
#2

Är det inte snarare DocumentElement som är null?

x.AppendChild(tmpNode)
Medlem sedan apr. 200730 inlägg
#3

Självklart är det så. Men om jag appendar direkt på x får jag.

System.ArgumentException: The node to be inserted is from a different document context.

Antar att jag måste skapa en root nod, hur man nu gör det.
Edit: Samma fel även om jag lägger in en rootnod.

Medlem sedan apr. 200730 inlägg
#4

Fungerar

Detta fungerar bra.

        Dim xn As XmlNode
        For Each xn In list
            x.DocumentElement.AppendChild(x.ImportNode(xn, True))
        Next
148 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
145 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)