Example #1
0
    <map src="&lt;" dest="6" /> 
    <map src="bc" dest="$1" />
    <map src="e" dest="3" />
    <map src="abd" dest="*" />
    <map src="ad" dest="@" />  
    <map src="abd" dest="*" />
    <map src="ad" dest="@" />
  </mappings>
</keymap>';
echo "\$which technique\n";
$tags = array("keymap");
$child_tags = array("map");
$parser = new XML_PullParser_doc($doc, $tags, $child_tags);
$token = $parser->XML_PullParser_getToken();
$which = 1;
$maps = $parser->XML_PullParser_getElement('map');
while ($map = $parser->XML_PullParser_getAttributes($maps, $which)) {
    echo "src => " . $map['SRC'] . "\n";
    // attribute names must use caps since case-folding is in effect
    echo "dest => " . $map['DEST'] . "\n\n";
    $which++;
}
echo "\nXML_PullParser_nextElement technique\n";
while ($server = $parser->XML_PullParser_nextElement()) {
    $attr_array = $parser->XML_PullParser_getAttributes($server);
    $src = $parser->XML_PullParser_getAttrVal("src", $attr_array);
    // method takes case-folding into account
    $dest = $parser->XML_PullParser_getAttrVal("dest", $attr_array);
    echo "src: {$src}, dest: {$dest}\n";
}
echo "\n";
<registrant>mturner.org </registrant>
</server> 
<server ip="192.168.10.2"> example_2.com  </server> 
<server ip="192.168.10.3"> example_3.com  </server> 
<alias> www.example.com  </alias> 
</ENTRY>';
$tags = array("Entry");
$child_tags = array("server");
$parser = new XML_PullParser_doc($doc, $tags, $child_tags);
while ($token = $parser->XML_PullParser_getToken()) {
    $servers = $parser->XML_PullParser_getElement('server');
    $servers = $parser->XML_PullParser_childXCL($servers);
    $seq = $parser->XML_PullParser_getSequence($servers);
    for ($i = 0; $i < count($seq); $i++) {
        list($server, $which) = each($seq[$i]);
        $name = $parser->XML_PullParser_getText($server, $which);
        echo "Name: {$name} \n";
        $ip = $parser->XML_PullParser_getAttributes($server, $which);
        echo "\tIP: " . $parser->XML_PullParser_getAttrVal('ip', $ip) . "\n";
    }
}
/*
 Result
Name:
example_1.com
        IP: 192.168.10.1
Name:  example_2.com
        IP: 192.168.10.2
Name:  example_3.com
        IP: 192.168.10.3
*/