Sample code for 30+ languages & platforms
Lianja

Demonstrate XML SearchForTag2

Demonstrates how to use SearchForTag2.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

loXml = createobject("CkXml")

// 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>

llSuccess = loXml.LoadXml("<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
loXmlSearch = loXml.GetRoot()
loAfterPtr = loXml.GetRoot()

// Alway begin the search from the root.
do while loXmlSearch.SearchForTag2(loAfterPtr,"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.
    ? str(i) + ": " + loXmlSearch.Content
    loPTemp = loAfterPtr
    loAfterPtr = loXmlSearch
    loPTemp.GetRoot2()
    loXmlSearch = loPTemp
enddo

release loXmlSearch
release loAfterPtr

? "----"

// A better way:
loSbState = createobject("CkStringBuilder")
i = 0
do while loXml.NextInTraversal2(loSbState) <> .F.
    if (loXml.TagEquals("testchild1") = .T.) then
        ? str(i) + ": " + loXml.Content
        i = i + 1
    endif

enddo
loXml.GetRoot2()


release loXml
release loSbState