note 93076 deleted from example.xml-structure by danbrown
| From: | danbrown@php.net | Date: | Fri, 21 Aug 2009 20:02:47 +0000 |
| Subject: | note 93076 deleted from example.xml-structure by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-159769@lists.php.net to get a copy of this message | ||
Note Submitter: helper
----
The above example didn't work in 2006 (see http://www.webmasterworld.com/php/3197411.htm)
and still doesn't work. I made three commented changes and it makes sense now.
It's slow going learning new php when the manual examples don't work..
Try this:
<?php
$file = "test.xml";
$depth = array();
function startElement($parser, $name, $attrs)
{
global $depth;
if(!isset($depth[$parser])) $depth[$parser] = 0; // #1
for ($i = 0; $i < $depth[$parser]; $i++) {
echo " "; // #2
}
echo "$name"."<br>"; // #3
$depth[$parser]++;
}
function endElement($parser, $name)
{
global $depth;
$depth[$parser]--;
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
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);
?>