note 45890 added to function.xml-parse
| From: | tgrabietzatbupnetdotde at osu1 dot php dot net | 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