Sample code for 30+ languages & platforms
PHP Extension

Demonstrate XML SearchForTag2

Demonstrates how to use SearchForTag2.

Chilkat PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

$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>

$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 CkXml
$xmlSearch = $xml->GetRoot();
// afterPtr is a CkXml
$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() . "\n";
    // pTemp is a CkXml
    $pTemp = $afterPtr;
    // afterPtr is a CkXml
    $afterPtr = $xmlSearch;
    $pTemp->GetRoot2();
    // xmlSearch is a CkXml
    $xmlSearch = $pTemp;
}

print '----' . "\n";

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

}

$xml->GetRoot2();

?>