Sample code for 30+ languages & platforms
Perl

Demonstrate XML SearchForTag2

Demonstrates how to use SearchForTag2.

Chilkat Perl Downloads

Chilkat2 Perl
use strict;
use warnings;
use Chilkat2;

my $xml = Chilkat2::Xml->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>

my $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>');

my $i = 0;
my $xmlSearch = $xml->GetRoot();
my $afterPtr = $xml->GetRoot();
my $pTemp;

# 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, "\n";
    $pTemp = $afterPtr;
    $afterPtr = $xmlSearch;
    $pTemp->GetRoot2();
    $xmlSearch = $pTemp;
}

print "----\n";

# A better way:
my $sbState = Chilkat2::StringBuilder->new;
$i = 0;
while ($xml->NextInTraversal2($sbState)) {
    if ($xml->TagEquals('testchild1')) {
        print $i, ': ', $xml->Content, "\n";
        $i = $i + 1;
    }
}

$xml->GetRoot2();