include_once( "ezxml/classes/ezxml.php" );
$xmlDocument =
"<?xml version=\"1.0\"?>
<document version=\"42\">
<person>
<firstname value=\"Bård\" />
<lastname value=\"Farstad\" />
<description>
Coder.
</description>
</person>
<person>
<firstname value=\"Christoffer A.\" />
<lastname value=\"Elo\" />
<description>
Coder.
</description>
</person>
</document>";
$tree =& eZXML::domTree( $xmlDocument, array( "TrimWhiteSpace" => true ) );
foreach ( $tree->children as $document )
{
// parse the document
if ( $document->name == "document" )
{
// get the document version attribute
foreach ( $document->attributes as $documentAttr )
{
if ( $documentAttr->name == "version" )
{
print( "Found document with version: " . $documentAttr->content . "<br>" );
}
}
// parse all persons
foreach ( $document->children as $person )
{
if ( $person->name == "person" )
{
print( "Found a new person <br>" );
$firstName = "";
$lastName = "";
$descriptionName = "";
// get the name and description
foreach ( $person->children as $personAttribute )
{
switch ( $personAttribute->name )
{
case "firstname" :
{
$firstName = getAttrValue( $personAttribute, "value" );
}break;
case "lastname" :
{
$lastName = getAttrValue( $personAttribute, "value" );
}break;
case "description" :
{
// get the description text
foreach ( $personAttribute->children as $description )
{
if ( $description->type == 3 )
{
$description = $description->content;
}
}
}break;
}
}
print( "The persons firstname is: $firstName <br>" );
print( "The persons lastname is: $lastName <br>" );
print( "The persons description is: $description <br>" );
}
}
}
}
/*!
Function to fetch an attribute value.
Will return the value of the attribute if found. False if not found.
*/
function getAttrValue( $node, $attrName )
{
$ret = false;
foreach ( $node->attributes as $nodeAttr )
{
if ( $nodeAttr->name == $attrName )
{
$ret = $nodeAttr->content;
}
}
return $ret;
} |