<?php $doc = '<DNS> <ENTRY> <ipaddress type="primary">172.20.19.6 </ipaddress> <server ip="192.168.10.1" registrant="example.com"> example_1.com </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> </DNS> '; require_once "XML_PullParser.inc"; $parser = new XML_PullParser_doc($doc, array("Entry"), array('server')); while ($token = $parser->XML_PullParser_getToken()) { $parser->XML_PullParser_getElement('server'); $parser->XML_PullParser_setAttrLoop(); while ($attr = $parser->XML_PullParser_nextAttr()) { foreach ($attr[1] as $attr_name => $attr_value) { echo "{$attr['0']}: {$attr_name} => {$attr_value}\n"; } echo "\n"; } } // echo XML_PullParser_Errors_Trace() . "\n"; /* Result SERVER: IP => 192.168.10.1 SERVER: REGISTRANT => example.com
<title> Ms.</title> <firstname>Jane</firstname> <lastname>Jones</lastname> </name> </ENTRY> XMLDOC; if (isset($_SERVER['REMOTE_ADDR']) || $argc > 1) { echo "<pre>"; echo preg_replace('/</', '<', $doc); echo "\n<hr>\n"; } XML_PullParser_excludeBlanks(true); XML_PullParser_trimCdata(true); $tags = array("entry"); $child_tags = array("name", "lastname"); $parser = new XML_PullParser_doc($doc, $tags, $child_tags); $entry = $parser->XML_PullParser_getToken(); // the default token here will be $entry echo "Getting lastname\n"; echo "Using token from XML_PullParser_getToken(), i.e <ENTRY>. . .</ENTRY>\n"; printf("%20s %4s %-8s %s\n", "\$el ", "\$which", " \$xcl", "Result"); for ($i = 0; $i < 4; $i++) { display_result("lastname", $i); } echo "\nUsing token from XML_PullParser_getElement('name')\n"; printf("%20s %4s %-8s %s\n", "\$el ", "\$which", " \$xcl", "Result"); /* the default token will be $parser->current_element, which will be an array consisting of 'name' elements and their descendents */ $parser->XML_PullParser_getElement('name'); for ($i = 0; $i < 4; $i++) {
<?php $doc = '<DNS> <ENTRY> <ipaddress type="primary">172.20.19.6 </ipaddress> <server ip="192.168.10.1" registrant="example.com"> example_1.com </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> </DNS> '; require_once "XML_PullParser.inc"; $parser = new XML_PullParser_doc($doc, array("Entry"), array()); while ($token = $parser->XML_PullParser_getToken()) { // $attributes = $parser->XML_PullParser_getAttrValues(array("server"=>"Entry")); $attributes = $parser->XML_PullParser_getAttrValues(array("server" => $token)); foreach ($attributes as $attr) { foreach ($attr as $attr_name => $attr_value) { echo "{$attr_name} => {$attr_value}\n"; } echo "\n"; } } /* Result IP => 192.168.10.1 REGISTRANT => example.com IP => 192.168.10.2
<sort type="non" /> <mappings> <map src="b" dest="2" /> <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);
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(); }
require_once "XML_PullParser.inc"; $doc = '<ENTRY> <ipaddress>172.20.19.6 </ipaddress> <domain> example.com </domain> <server ip="192.168.10.1"> example_1.com <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:
<?php $topsecret = ' <Confidential_report> <item> The company has a ground-breaking new product called <emphasis>Ground-breaker.</emphasis> </item> <topsecret>Its formula is H20</topsecret> <item>We expect to begin selling it by the end of the year.</item> </Confidential_report>'; require_once "XML_PullParser.inc"; $tags = array("Confidential_report"); $child_tags = array(); XML_PullParser_trimCdata(true); XML_PullParser_excludeBlanks(true); $parser = new XML_PullParser_doc($topsecret, $tags, $child_tags); $token = $parser->XML_PullParser_getToken(); $classified = $parser->XML_PullParser_childXCL($token, "topsecret"); $old_delim = $parser->XML_PullParser_setDelimiter("\n"); echo $parser->XML_PullParser_getTextStripped($classified) . "\n"; $parser->XML_PullParser_setDelimiter($old_delim); /* Result The company has a ground-breaking new product called Ground-breaker. We expect to begin selling it by the end of the year. */
<title> Ms.</title> <firstname>Jane</firstname> <lastname>Jones</lastname> </name> </ENTRY> XMLDOC; if (isset($_SERVER['REMOTE_ADDR']) || $argc > 1) { echo "<pre>"; echo preg_replace('/</', '<', $doc); echo "\n<hr>\n"; } XML_PullParser_excludeBlanks(true); XML_PullParser_trimCdata(true); $tags = array("entry"); $child_tags = array("name"); $parser = new XML_PullParser_doc($doc, $tags, $child_tags); $entry = $parser->XML_PullParser_getToken(); echo "Using token from XML_PullParser_getToken(), i.e <ENTRY>. . .</ENTRY>\n"; printf("%20s %4s %-8s %s\n", "\$el ", "\$which", " \$xcl", "Result"); for ($i = 0; $i < 6; $i++) { display_result($entry, $i); display_result("name", $i); } echo "\nUsing token from XML_PullParser_getElement('name')\n"; printf("%20s %4s %-8s %s\n", "\$el ", "\$which", " \$xcl", "Result"); $name = $parser->XML_PullParser_getElement('name'); for ($i = 0; $i < 6; $i++) { display_result($name, $i); display_result("name", $i); } function display_result($el, $which)