Puedes hacer un método recursivo, que si no lo encuentra en los hijos del nodo actual, busque en los nodos de cada uno de los hijos... algo así
Código PHP:
public boolean hasChildNode(aNode){
return this.hasDirectChild(aNode) || this.childsHaveNode(aNode);
}
private boolean hasDirectChild(aNode){
//Aqui lo buscas en los hijos directos
}
private boolean childsHaveNode(aNode){
for(node as bleh) //por cada nodo que tenes como hijos
if (node.hasChildNode(aNode)) return true;
return false;
}
Eso es un gran pseudo código, el resto te lo dejo a tí ;).
Piensa que los XML son estructuras recursivas, donde cada nodo tiene hijos y esos hijos son nodos que tambien tienen hijos y así sucesivamente. Cuando una estructura es recursiva lo mas natural es recorrerlas recursivamente :).