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 <C_CkXml.h>
void ChilkatSample(void)
{
HCkXml xml;
HCkXml xml2;
int index;
// Build the 1st XML document:
// <x1>
// <a1>1</a1>
// <a2>2</a2>
// <a3>3</a3>
// </x1>
xml = CkXml_Create();
CkXml_putTag(xml,"x1");
CkXml_UpdateChildContent(xml,"a1","1");
CkXml_UpdateChildContent(xml,"a2","2");
CkXml_UpdateChildContent(xml,"a3","3");
// Build a 2nd XML document:
// <x2>
// <b1>11</b1>
// <b2>22</b2>
// <b3>33</b3>
// </x2>
xml2 = CkXml_Create();
CkXml_putTag(xml2,"x2");
CkXml_UpdateChildContent(xml2,"b1","11");
CkXml_UpdateChildContent(xml2,"b2","22");
CkXml_UpdateChildContent(xml2,"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"
index = CkXml_TagIndex(xml,"a1");
if (index < 0) {
printf("a1 not found.\n");
CkXml_Dispose(xml);
CkXml_Dispose(xml2);
return;
}
CkXml_InsertChildTreeAfter(xml,index,xml2);
printf("%s\n",CkXml_getXml(xml));
// 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:
CkXml_UpdateChildContent(xml2,"b3","33333333");
printf("%s\n",CkXml_getXml(xml));
// The result:
// <x1>
// <a1>1</a1>
// <x2>
// <b1>11</b1>
// <b2>22</b2>
// <b3>33333333</b3>
// </x2>
// <a2>2</a2>
// <a3>3</a3>
// </x1>
CkXml_Dispose(xml);
CkXml_Dispose(xml2);
}