note 72120 deleted from ref.domxml by nlopess
| From: | nlopess@php.net | Date: | Wed, 03 Jan 2007 15:12:55 +0000 |
| Subject: | note 72120 deleted from ref.domxml by nlopess | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-121249@lists.php.net to get a copy of this message | ||
Note Submitter: amsea at lvge dot com
----
Hi, body. a update for the function of xml2array, to dispose the CDATA Node.
<?php
// func.xml2array.php
// updater from http://www.oo8h.com/
// a update function to dispose the CDATA
// add a case for XML_CDATA_SECTION_NODE:
function xml2array($domnode)
{
$nodearray = array();
$domnode = $domnode->firstChild;
while (!is_null($domnode))
{
$currentnode = $domnode->nodeName;
switch ($domnode->nodeType)
{
case XML_ELEMENT_NODE:
if ($domnode->hasAttributes() )
{
$elementarray = array();
$attributes = $domnode->attributes;
foreach ($attributes as $index => $domobj)
{
$elementarray[$domobj->name] = $domobj->value;
}
}
break;
case XML_CDATA_SECTION_NODE:
case XML_TEXT_NODE:
if(!(trim($domnode->nodeValue) == "")) $nodearray =
$domnode->nodeValue;
break;
}
if ( $domnode->hasChildNodes() )
{
$nodearray[$currentnode][] = xml2array($domnode);
if (isset($elementarray))
{
$currnodeindex = count($nodearray[$currentnode]) - 1;
$nodearray[$currentnode][$currnodeindex]['@'] = $elementarray;
}
} else {
if (isset($elementarray) && $domnode->nodeType != XML_TEXT_NODE)
{
$nodearray[$currentnode]['@'] = $elementarray;
}
}
$domnode = $domnode->nextSibling;
}
return $nodearray;
}
?>
update by amsea, http://www.oo8h.com/