<map src="<" 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 */