Sample code for 30+ languages & platforms
C++

Demonstrate XML SearchForTag2

Demonstrates how to use SearchForTag2.

Chilkat C++ Downloads

C++
#include <CkXml.h>
#include <CkStringBuilder.h>

void ChilkatSample(void)
    {
    bool success = false;

    CkXml xml;

    //  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 = xml.LoadXml("<Test><testchild1>test</testchild1><testchild1>test1</testchild1><testchild1>test2</testchild1><testchild1>test3</testchild1><testchild1>test4</testchild1><testchild1>test5</testchild1><testchild1>test6</testchild1></Test>");

    int i = 0;
    CkXml *xmlSearch = xml.GetRoot();
    CkXml *afterPtr = xml.GetRoot();
    CkXml *pTemp = 0;

    //  Alway begin the search from the root.
    while (xmlSearch->SearchForTag2(*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.
        std::cout << i << ": " << xmlSearch->content() << "\r\n";
        pTemp = afterPtr;
        afterPtr = xmlSearch;
        pTemp->GetRoot2();
        xmlSearch = pTemp;
    }

    delete xmlSearch;
    delete afterPtr;

    std::cout << "----" << "\r\n";

    //  A better way:
    CkStringBuilder sbState;
    i = 0;
    while (xml.NextInTraversal2(sbState) != false) {
        if (xml.TagEquals("testchild1") == true) {
            std::cout << i << ": " << xml.content() << "\r\n";
            i = i + 1;
        }

    }

    xml.GetRoot2();
    }