note 52764 added to ref.dom
| From: | toma at smartsemantics dot com | Date: | Thu, 12 May 2005 02:22:23 +0000 |
| Subject: | note 52764 added to ref.dom | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-89293@lists.php.net to get a copy of this message | ||
Based loosely on some previously provided examples, here are 2 functions to read in an XML file
using DOM and parse it into a usable array for reading/access. The output is a very clean array.
------------------------------------
function LoadXMLFile( $path,$file) {
$oldpath= getcwd( ) ;
chdir( $path) ;
$dom= DOMDocument::load( $path.$file) ;
chdir( $oldpath) ;
$xml= array( ) ;
parseXML( $dom,$xml) ;
return $xml;
}
function parseXML( $dom,&$arr)
{
$arr_ptr= &$arr;
$dom= $dom->firstChild;
while( !is_null( $dom) ) {
switch ( $dom->nodeType) {
case XML_TEXT_NODE:
if( trim( $dom->nodeValue) != '') {
if( is_array( $arr_ptr) ) {
$arr_ptr[]= $dom->nodeValue;
}
elseif( $arr_ptr != '') {
$arr_ptr= array( $arr_ptr) ;
$arr_ptr[]= $dom->nodeValue;
}
else{
$arr_ptr= $dom->nodeValue;
}
}
break;
case XML_ELEMENT_NODE:
$arr_ptr= &$arr[$dom->nodeName];
if ( $dom->hasAttributes( ) ) {
$attributes= $dom->attributes;
foreach( $attributes as $index= >$domobj) {
$arr_ptr['ATTRIBUTES'] [$domobj->name]= $domobj->value;
}
}
break;
}
if( $dom->hasChildNodes( ) ) {
parseXML( $dom,$arr_ptr) ;
}
$dom= $dom->nextSibling;
}
}
------------------------------------
Example usage:
$CONFIG= LoadXMLFile( '/var/www/html/site.com/php-bin/','config.xml') ;
----
Manual Page -- http://www.php.net/manual/en/ref.dom.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+52764
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+52764&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+52764&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+52764&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+52764&report=yes&reason=useless
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+52764&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+52764&report=yes
Search -- http://master.php.net/manage/user-notes.php