note 96031 deleted from class.xmlreader by danbrown
| From: | danbrown@php.net | Date: | Thu, 04 Feb 2010 02:55:53 +0000 |
| Subject: | note 96031 deleted from class.xmlreader by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-165647@lists.php.net to get a copy of this message | ||
Note Submitter: Anonymous
----
<?php
function xml_to_assoc($xml)
{
$tree = NULL;
while ($xml->read())
{
switch ($xml->nodeType)
{
case XMLReader::END_ELEMENT: return $tree;
case XMLReader::ELEMENT:
$node = $xml->isEmptyElement ? '' : xml_to_assoc($xml);
$name = $xml->name;
if ($xml->hasAttributes) {
if ( ! is_array($node) && ! empty($node)) $node = array($node);
while ($xml->moveToNextAttribute())
$node['attributes'][$xml->name] = $xml->value;
}
if (isset($tree[$name]) && ! isset($tree[$name][0])) {
$array = $tree[$name]; unset($tree[$name]); $tree[$name][] = $array; }
if (isset($tree[$name])) $tree[$name][] = $node; else $tree[$name] = $node;
break;
case XMLReader::TEXT:
case XMLReader::CDATA:
$tree .= $xml->value;
}
}
return $tree;
}
$xml = new XMLReader();
#$xml->open($xmlfile);
$xml->xml($xmlstring);
$assoc = xml_to_assoc($xml);
$xml->close();
echo "<pre>".print_r($assoc, true)."</pre>";
?>