Tcl
Tcl
Demonstrate XML SearchForTag2
Demonstrates how to use SearchForTag2.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
set xml [new_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>
set 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>"]
set i 0
# xmlSearch is a CkXml
set xmlSearch [CkXml_GetRoot $xml]
# afterPtr is a CkXml
set afterPtr [CkXml_GetRoot $xml]
# pTemp is a CkXml
# Alway begin the search from the root.
while {D]CkXml_SearchForTag2 $xmlSearch $afterPtr "testchild1"[/L} {
# If successful, xmlSearch now points to the found element.
set i [expr $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.
puts "$i: [CkXml_content $xmlSearch]"
set pTemp $afterPtr
set afterPtr $xmlSearch
CkXml_GetRoot2 $pTemp
set xmlSearch $pTemp
}
delete_CkXml $xmlSearch
delete_CkXml $afterPtr
puts "----"
# A better way:
set sbState [new_CkStringBuilder]
set i 0
while {[CkXml_NextInTraversal2 $xml $sbState] != 0} {
if {[CkXml_TagEquals $xml "testchild1"] == 1} then {
puts "$i: [CkXml_content $xml]"
set i [expr $i + 1]
}
}
CkXml_GetRoot2 $xml
delete_CkXml $xml
delete_CkStringBuilder $sbState