Sample code for 30+ languages & platforms
PHP

Demonstrate XML SearchForTag2

Demonstrates how to use SearchForTag2.

Chilkat PHP Downloads

Chilkat2 PHP
<?php

use Chilkat2\StringBuilder;
use Chilkat2\Xml;

$xml = new Xml();

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

$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 = $xml->GetRoot();
$afterPtr = $xml->GetRoot();
$pTemp = null;

// Alway begin the search from the root.
while (ERROR: A status method used as a value: xmlSearch.SearchForTag2
$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.
    echo $i, ': ', $xmlSearch->Content, "\n";
    $pTemp = $afterPtr;
    $afterPtr = $xmlSearch;
    $pTemp->GetRoot2();
    $xmlSearch = $pTemp;
}

echo "----\n";

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

$xml->GetRoot2();