PureBasic
PureBasic
Demonstrate XML SearchForTag2
Demonstrates how to use SearchForTag2.Chilkat PureBasic Downloads
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkXml.pb"
Procedure ChilkatExample()
success.i = 0
xml.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; 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::ckLoadXml(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.i = 0
xmlSearch.i = CkXml::ckGetRoot(xml)
afterPtr.i = CkXml::ckGetRoot(xml)
pTemp.i
; Alway begin the search from the root.
While CkXml::ckSearchForTag2(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.
Debug Str(i) + ": " + CkXml::ckContent(xmlSearch)
pTemp = afterPtr
afterPtr = xmlSearch
CkXml::ckGetRoot2(pTemp)
xmlSearch = pTemp
Wend
CkXml::ckDispose(xmlSearch)
CkXml::ckDispose(afterPtr)
Debug "----"
; A better way:
sbState.i = CkStringBuilder::ckCreate()
If sbState.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
i = 0
While CkXml::ckNextInTraversal2(xml,sbState) <> 0
If CkXml::ckTagEquals(xml,"testchild1") = 1
Debug Str(i) + ": " + CkXml::ckContent(xml)
i = i + 1
EndIf
Wend
CkXml::ckGetRoot2(xml)
CkXml::ckDispose(xml)
CkStringBuilder::ckDispose(sbState)
ProcedureReturn
EndProcedure