J'ai cet objet de résultat SimplexML:
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;
4 Réponses :
mettre * / problem_cause code>. p>
sonne comme un simple Isset () résout ce problème.
<?php
$s = new SimpleXMLElement('<foo version="1">
<weather section="0" />
<problem_cause data="" />
</foo>');
// var_dump($s) produces the same output as in the question, except for the object id numbers.
echo isset($s->problem_cause) ? '+' : '-';
$s = new SimpleXMLElement('<foo version="1">
<weather section="0" />
</foo>');
echo isset($s->problem_cause) ? '+' : '-';
Oh merci. C'est une solution très facile.
Il est préférable d'utiliser vide () code> que isset () code>. L'accès à un enfant de l'objet le créera s'il n'existe pas, alors SimplexMlelement retournera un élément vide et Isset () code> retournera true.
@ Mugomaj.okomba vide () code> retourne vrai même si le noeud existe mais n'a pas de contenu
Utilisation du code que vous avez affiché, cet exemple doit fonctionner pour trouver le nœud problem_cause à une profondeur.
function xml_child_exists($xml, $childpath)
{
$result = $xml->xpath($childpath);
return (bool) (count($result));
}
if(xml_child_exists($xml, '//problem_cause'))
{
echo 'found';
}
else
{
echo 'not found';
}
Essayez ceci: J'espère que cela vous aidera .. p> p>