Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

savoir si un SimpleXMLElement a des attributs ou pas

3 réponses
Avatar
Fred
Bonjour,

Pourtriez-vous me dire SVP comment faire pour tester si un objet de type
SimpleXMLElement a des attributs ou pas ?

J'ai essayé en vain :

if ($xml->attributes()) ...
if (isset($xml->attributes()) ..

mais ça échoue...

merci !

Fred

3 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 13/02/2013 16:36, Fred a écrit :

Pourtriez-vous me dire SVP comment faire pour tester si un objet de type
SimpleXMLElement a des attributs ou pas ?

J'ai essayé en vain :

if ($xml->attributes()) ...
if (isset($xml->attributes()) ..

mais ça échoue...



Je n'ai jamais utilisé cet objet, mais voici ce que je trouve dans un
commentaire utilisateur dans la doc :

http://www.php.net/manual/en/simplexmlelement.attributes.php#110574

Donc peut-être :
$atts_array = (array) $xml->attributes();
if (count($atts_array) == 0) ...
Avatar
Fred
Bonjour,

J'ai bien regardé ça mais le problème que le seul fait d'appeler
$xml->attributes();
lorsqu'il n'y a pas d'attributs, génère une erreur !



Le 14/02/2013 09:26, Olivier Miakinen a écrit :
Bonjour,

Le 13/02/2013 16:36, Fred a écrit :

Pourtriez-vous me dire SVP comment faire pour tester si un objet de type
SimpleXMLElement a des attributs ou pas ?

J'ai essayé en vain :

if ($xml->attributes()) ...
if (isset($xml->attributes()) ..

mais ça échoue...



Je n'ai jamais utilisé cet objet, mais voici ce que je trouve dans un
commentaire utilisateur dans la doc :

http://www.php.net/manual/en/simplexmlelement.attributes.php#110574

Donc peut-être :
$atts_array = (array) $xml->attributes();
if (count($atts_array) == 0) ...

Avatar
Olivier Miakinen
Le 14/02/2013 14:25, Fred a écrit en citant à l'envers(¹) :

J'ai bien regardé ça mais le problème que le seul fait d'appeler
$xml->attributes();
lorsqu'il n'y a pas d'attributs, génère une erreur !



Que ne le disais-tu dans ton premier article ! Et si tu nous
disais ce que raconte l'erreur pour qu'on ne perde pas plus de
temps ? ;-)

Voyons :
http://www.php.net/manual/en/simplexmlelement.attributes.php
http://www.php.net/manual/fr/simplexmlelement.attributes.php

Non seulement il n'est pas prévu que cette fonction retourne une
erreur si la balise n'a pas d'attributs, mais même il est prévu
qu'elle retourne NULL si l'objet est déjà lui-même un attribut
au lieu d'une balise !

Il faudrait voir quelle est l'erreur, mais je parierais que ton
$xml contient NULL suite à une erreur d'un appel précédent. À toi
de confirmer ou d'infirmer mon hypothèse.

P.-S. :
(¹) http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
(merci)

Cordialement,
--
Olivier Miakinen