C
C
Demonstrate XML SearchForTag2
Demonstrates how to use SearchForTag2.Chilkat C Downloads
#include <C_CkXml.h>
#include <C_CkStringBuilder.h>
void ChilkatSample(void)
{
BOOL success;
HCkXml xml;
int i;
HCkXml xmlSearch;
HCkXml afterPtr;
HCkXml pTemp;
HCkStringBuilder sbState;
success = FALSE;
xml = CkXml_Create();
// Load the following XML:
// <Test>
// <testchild1>
// test
// </testchild1>
// <testchild1>
// test1
// </testchild1>
// <testchild1>
// test2
// </testchild1>
// <testchild1>
// test3
// </testchild1>
// <testchild1>
// test4
// </testchild1>
// <testchild1>
// test5
// </testchild1>
// <testchild1>
// test6
// </testchild1>
// </Test>
success = CkXml_LoadXml(xml,"<Test><testchild1>test</testchild1><testchild1>test1</testchild1><testchild1>test2</testchild1><testchild1>test3</testchild1><testchild1>test4</testchild1><testchild1>test5</testchild1><testchild1>test6</testchild1></Test>");
i = 0;
xmlSearch = CkXml_GetRoot(xml);
afterPtr = CkXml_GetRoot(xml);
// Alway begin the search from the root.
while (CkXml_SearchForTag2(xmlSearch,afterPtr,"testchild1")) {
// If successful, xmlSearch now points to the found element.
i = i + 1;
// Set afterPtr = xmlSearch (so we find the next match after the one we just found)
// Rest xmlSearch to the root of the XML tree to be searched.
printf("%d: %s\n",i,CkXml_content(xmlSearch));
pTemp = afterPtr;
afterPtr = xmlSearch;
CkXml_GetRoot2(pTemp);
xmlSearch = pTemp;
}
CkXml_Dispose(xmlSearch);
CkXml_Dispose(afterPtr);
printf("----\n");
// A better way:
sbState = CkStringBuilder_Create();
i = 0;
while (CkXml_NextInTraversal2(xml,sbState) != FALSE) {
if (CkXml_TagEquals(xml,"testchild1") == TRUE) {
printf("%d: %s\n",i,CkXml_content(xml));
i = i + 1;
}
}
CkXml_GetRoot2(xml);
CkXml_Dispose(xml);
CkStringBuilder_Dispose(sbState);
}