tengo este objeto de resultado simplexml:Compruebe si existe el nodo XML en PHP
object(SimpleXMLElement)#207 (2) {
["@attributes"]=>
array(1) {
["version"]=>
string(1) "1"
}
["weather"]=>
object(SimpleXMLElement)#206 (2) {
["@attributes"]=>
array(1) {
["section"]=>
string(1) "0"
}
["problem_cause"]=>
object(SimpleXMLElement)#94 (1) {
["@attributes"]=>
array(1) {
["data"]=>
string(0) ""
}
}
}
}
tengo que comprobar si existe el nodo "problem_cause". Incluso si está vacío, el resultado es un error. En el manual de php, me encontré con este código php que he modificado para mis necesidades:
function xml_child_exists($xml, $childpath)
{
$result = $xml->xpath($childpath);
if (count($result)) {
return true;
} else {
return false;
}
}
if(xml_child_exists($xml, 'THE_PATH')) //error
{
return false;
}
return $xml;
no tengo idea de qué poner en el lugar de la consulta XPath 'THE_PATH' para comprobar si existe el nodo. ¿O es mejor convertir el objeto simplexml en dom?
Oh, gracias. Esa es una solución muy fácil. – reggie
Es mejor usar 'empty()' que 'isset()'. El acceso a un elemento secundario del objeto lo creará si no existe, por lo que SimpleXMLElement devolverá un elemento vacío y 'isset()' devolverá verdadero. –
@ MugomaJ.Okomba 'empty()' devuelve verdadero incluso si el nodo existe pero no tiene contenido – CITBL