Traversing a Tree of XML Nodes Using Recursion : DomDocument « XML « PHP






Traversing a Tree of XML Nodes Using Recursion

 
<?php

$doc = new DomDocument("1.0");
$doc->loadXML( file_get_contents("data.xml") );
$root = $doc->firstChild;
traverse( $root );

function traverse( DomNode $node, $level=0 ){
  handle_node( $node, $level );
 if ( $node->hasChildNodes() ) {
   $children = $node->childNodes;
   foreach( $children as $kid ) {
     if ( $kid->nodeType == XML_ELEMENT_NODE ) {
       traverse( $kid, $level+1 );
     }
   }
 }
}

function handle_node( DomNode $node, $level ) {
  for ( $x=0; $x<$level; $x++ ) {
    print " ";
  }
  if ( $node->nodeType == XML_ELEMENT_NODE ) {
    print $node->tagName."<br />\n";
  }
}
?>
  
  








Related examples in the same category

1.Append children
2.Constructing an XML Document with the DOM Functions
3.Create element with DomDocument
4.Create the script that uses the DOM extension to create a list of title and book_id attributes.
5.DOM editing with DomDocument
6.Creating and Setting Attributes
7.Loading from server
8.Loads the content of this file into a DOM object tree.
9.Get element by tag name
10.Parsing XML
11.Using XPath with DOM in a more complicated example
12.Sample Transformation File test-php5.php
13.Validating an XML document
14.Using CDATA sections, or character data sections
15.Using DOM to Generate Markup
16.Use the createTextNode() method to add multiple text strings to a body element in an HTML document.
17.Traversing a Tree of XML Nodes Using On-Demand Functions
18.Remove the creation and appending of attributes and simply assign the needed attributes to the elements
19.Return a list of nodes that can be examined one at the time in a foreach() loop