note 45890 added to function.xml-parse

From: Date: Wed, 22 Sep 2004 15:05:18 +0000
Subject: note 45890 added to function.xml-parse
Groups: php.notes 
Request: Send a blank email to php-notes+get-77160@lists.php.net to get a copy of this message
it's like randlem at gmail dot com's great code, without using a "class container" but parsing cdata. The script returns the tree-structure in a single array. <?php $file = 'simple.xml'; $stack = array(); function startTag($parser, $name, $attrs) { global $stack; $tag=array("name"=>$name,"attrs"=>$attrs); array_push($stack,$tag); } function cdata($parser, $cdata) { global $stack,$i; if(trim($cdata)) { $stack[count($stack)-1]['cdata']=$cdata; } } function endTag($parser, $name) { global $stack; $stack[count($stack)-2]['children'][] = $stack[count($stack)-1]; array_pop($stack); } $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startTag", "endTag"); xml_set_character_data_handler($xml_parser, "cdata"); $data = xml_parse($xml_parser,file_get_contents($file)); if(!$data) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); } xml_parser_free($xml_parser); print("<pre>\n"); print_r($stack); print("</pre>\n"); ?> ---- Manual Page -- http://www.php.net/manual/en/function.xml-parse.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+45890 Delete -- http://master.php.net/manage/user-notes.php?action=delete+45890&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+45890&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#77160) next »