Sample code for 30+ languages & platforms
Perl

Demonstrate XML SearchForTag2

Demonstrates how to use SearchForTag2.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

$xml = chilkat::CkXml->new();

# 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>");

$i = 0;
# xmlSearch is a Xml
$xmlSearch = $xml->GetRoot();
# afterPtr is a Xml
$afterPtr = $xml->GetRoot();

# 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.
    print $i . ": " . $xmlSearch->content() . "\r\n";
    # pTemp is a Xml
    $pTemp = $afterPtr;
    # afterPtr is a Xml
    $afterPtr = $xmlSearch;
    $pTemp->GetRoot2();
    # xmlSearch is a Xml
    $xmlSearch = $pTemp;
}

print "----" . "\r\n";

# A better way:
$sbState = chilkat::CkStringBuilder->new();
$i = 0;
while ($xml->NextInTraversal2($sbState) != 0) {
    if ($xml->TagEquals("testchild1") == 1) {
        print $i . ": " . $xml->content() . "\r\n";
        $i = $i + 1;
    }

}

$xml->GetRoot2();