Visual FoxPro
Visual FoxPro
Demonstrate XML SearchForTag2
Demonstrates how to use SearchForTag2.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loXml
LOCAL i
LOCAL loXmlSearch
LOCAL loAfterPtr
LOCAL loPTemp
LOCAL loSbState
lnSuccess = 0
loXml = CreateObject('Chilkat.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>
lnSuccess = 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('Chilkat.StringBuilder')
i = 0
DO WHILE loXml.NextInTraversal2(loSbState) <> 0
IF (loXml.TagEquals("testchild1") = 1) THEN
? STR(i) + ": " + loXml.Content
i = i + 1
ENDIF
ENDDO
loXml.GetRoot2()
RELEASE loXml
RELEASE loSbState