function get_array() { XML_PullParser_excludeBlanks(true); XML_PullParser_trimCdata(true); global $doc, $fn_names; $tags = array("simplelist"); $child_tags = array('member'); $parser = new XML_PullParser_doc($doc, $tags, $child_tags); while ($token = $parser->XML_PullParser_getToken()) { $parser->XML_PullParser_getElement('member'); $which = 1; while ($member = $parser->XML_PullParser_getText('member', $which)) { if (preg_match('/XML_PullParser(_\\w+)\\W/', $member, $matches)) { $fn_names[$matches[1]] = array(); } $which++; } } $parser->XML_PullParser_free(); }
<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 */