C++
C++
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 C++ Downloads
#include <CkXml.h>
void ChilkatSample(void)
{
// Build the 1st XML document:
// <x1>
// <a1>1</a1>
// <a2>2</a2>
// <a3>3</a3>
// </x1>
CkXml xml;
xml.put_Tag("x1");
xml.UpdateChildContent("a1","1");
xml.UpdateChildContent("a2","2");
xml.UpdateChildContent("a3","3");
// Build a 2nd XML document:
// <x2>
// <b1>11</b1>
// <b2>22</b2>
// <b3>33</b3>
// </x2>
CkXml xml2;
xml2.put_Tag("x2");
xml2.UpdateChildContent("b1","11");
xml2.UpdateChildContent("b2","22");
xml2.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"
int index = xml.TagIndex("a1");
if (index < 0) {
std::cout << "a1 not found." << "\r\n";
return;
}
xml.InsertChildTreeAfter(index,xml2);
std::cout << xml.getXml() << "\r\n";
// 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:
xml2.UpdateChildContent("b3","33333333");
std::cout << xml.getXml() << "\r\n";
// The result:
// <x1>
// <a1>1</a1>
// <x2>
// <b1>11</b1>
// <b2>22</b2>
// <b3>33333333</b3>
// </x2>
// <a2>2</a2>
// <a3>3</a3>
// </x1>
}