Traversing a Tree of XML Nodes Using On-Demand Functions : DomDocument « XML « PHP

Traversing a Tree of XML Nodes Using On-Demand Functions


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

do {
  print $pointer->tagName."<br />\n";
} while ( $pointer = next_element( $pointer ) );

function next_element( DomNode $pointer ) {
  while ( $pointer = next_node( $pointer ) ) {
    if ( $pointer->nodeType == XML_ELEMENT_NODE ) {
      return $pointer;
  return false;

function next_node( DomNode $pointer ) {
  if ( $pointer->hasChildNodes() ) {
    return $pointer->firstChild ;
  if ( $next = $pointer->nextSibling ) {
    return $next;
  while( $pointer = $pointer->parentNode ) {
    if ( $next=$pointer->nextSibling ) {
      return $next;

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 Recursion
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