Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

savoir si un SimpleXMLElement a des attributs ou pas

8 views
Skip to first unread message

Fred

unread,
Feb 13, 2013, 10:36:47 AM2/13/13
to
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

Olivier Miakinen

unread,
Feb 14, 2013, 3:26:32 AM2/14/13
to
Bonjour,
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) ...

Fred

unread,
Feb 14, 2013, 8:25:24 AM2/14/13
to
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 !

Olivier Miakinen

unread,
Feb 14, 2013, 8:43:00 AM2/14/13
to
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
0 new messages