If you want to recurse over a DOM then this might help: 
<?php 
/**
 * PHP's DOM classes are recursive but don't provide an implementation of 
 * RecursiveIterator. This class provides a RecursiveIterator for looping over DOMNodeList
 */
class DOMNodeRecursiveIterator extends ArrayIterator implements RecursiveIterator {
  public function __construct (DOMNodeList $node_list) {
$nodes = array();
    foreach($node_list as $node) {
$nodes[] = $node;
    }
parent::__construct($nodes);
  }
  public function getRecursiveIterator(){
    return new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST);
  }
  public function hasChildren () {
    return $this->current()->hasChildNodes();
  }
  public function getChildren () {
    return new self($this->current()->childNodes);
  }
}
?>