El usar $xml->xpath("//madre//hijo"); si no existe no te devuelve un error. Por ejemplo
Código PHP:
Ver original<?php
$string = <<<XML
<foo>
<bar>
<baz>candy</baz>
</bar>
<bar>
<vegetable>fruits</vegetable>
</bar>
</foo>
XML;
$xml = new SimpleXMLElement($string);
$results = $xml->xpath('//fruits');
foreach($results as $result){
echo $result;
}
Se supone que busca aquellos elementos que se llamen fruits y como no existen no despliega información. Debe ser que tienes declarado algo que usa el valor que te devuelve $xml y lo estás usando como que forzosamente debe siempre haber algún valor. Debes crear algúna condición para verificar si existe o no algún valor. Por ejemplo
Código PHP:
Ver original<?php
$string = <<<XML
<foo>
<bar>
<baz>candy</baz>
</bar>
<bar>
<vegetable>fruits</vegetable>
</bar>
</foo>
XML;
$xml = new SimpleXMLElement($string);
// Verifica los elementos que sean fruits
$results = $xml->xpath('//fruits');
foreach($results as $result){
echo $result;
}
}
// Verifica los elementos que sean baz
$results = $xml->xpath('//baz');
foreach($results as $result){
echo $result;
}
}