Xbase++
Xbase++
Insert XML into existing XML by calling InsertChildTreeAfter
See more XML Examples
Demonstrates how to insert an XML tree or subtree into another XML document using the InsertChildTreeAfter method.Chilkat Xbase++ Downloads
LOCAL oXml
LOCAL oXml2
LOCAL nIndex
// Build the 1st XML document:
// <x1>
// <a1>1</a1>
// <a2>2</a2>
// <a3>3</a3>
// </x1>
oXml := CreateObject("Chilkat.Xml")
oXml:Tag := "x1"
oXml:UpdateChildContent("a1", "1")
oXml:UpdateChildContent("a2", "2")
oXml:UpdateChildContent("a3", "3")
// Build a 2nd XML document:
// <x2>
// <b1>11</b1>
// <b2>22</b2>
// <b3>33</b3>
// </x2>
oXml2 := CreateObject("Chilkat.Xml")
oXml2:Tag := "x2"
oXml2:UpdateChildContent("b1", "11")
oXml2:UpdateChildContent("b2", "22")
oXml2:UpdateChildContent("b3", "33")
// We want to insert xml2 into xml to get this:
// <x1>
// <a1>1</a1>
// <x2>
// <b1>11</b1>
// <b2>22</b2>
// <b3>33</b3>
// </x2>
// <a2>2</a2>
// <a3>3</a3>
// </x1>
// Insert xml2 after "a1"
nIndex := oXml:TagIndex("a1")
IF (nIndex < 0)
? "a1 not found."
oXml:destroy()
oXml2:destroy()
RETURN
ENDIF
oXml:InsertChildTreeAfter(nIndex, oXml2)
? oXml:GetXml()
// The result is:
// <x1>
// <a1>1</a1>
// <x2>
// <b1>11</b1>
// <b2>22</b2>
// <b3>33</b3>
// </x2>
// <a2>2</a2>
// <a3>3</a3>
// </x1>
// Note: xml2 now points to the subtree within xml.
// For example, update "b3" and then see how it's updated within the merged document:
oXml2:UpdateChildContent("b3", "33333333")
? oXml:GetXml()
// The result:
// <x1>
// <a1>1</a1>
// <x2>
// <b1>11</b1>
// <b2>22</b2>
// <b3>33333333</b3>
// </x2>
// <a2>2</a2>
// <a3>3</a3>
// </x1>
oXml:destroy()
oXml2:destroy()