J'ai un problème pour accéder à la @attribute
section de mon objet SimpleXML. Quand je suis var_dump
l'objet entier, j'obtiens la sortie correcte, et quand je suis var_dump
le reste de l'objet (les balises imbriquées), j'obtiens la sortie correcte, mais quand je suis la documentation et var_dump
$xml->OFFICE->{'@attributes'}
, j'obtiens un objet vide, malgré le fait que le premier var_dump
montre clairement qu'il y a des attributs à produire.
Quelqu'un sait ce que je fais de mal ici / comment puis-je faire en sorte que cela fonctionne?
Réponses:
Vous pouvez obtenir les attributs d'un élément XML en appelant la fonction attributes () sur un nœud XML. Vous pouvez ensuite var_dump la valeur de retour de la fonction.
Plus d'informations sur php.net http://php.net/simplexmlelement.attributes
Exemple de code de cette page:
la source
$b
sera unSimpleXMLElement
objet ainsiprint_r
etvar_dump
vous donnera des choses étranges. Vous pouvez le lancer comme une chaîne (ou ce que vous voulez) pour contourner ce problème.Essaye ça
la source
attributes()
l'objet correspondant à la bonne balise dans votre XML. Comme si vous en avez,<root><tag attr="a">b</tag></root>
vous devez le faire$xml->tag->attributes()->attr
pour y accéder.J'ai utilisé avant tant de fois pour obtenir
@attributes
comme ci-dessous et c'était un peu plus long.Cela devrait être plus simple et vous ne pouvez obtenir les attributs suivant le format qu'à la fois:
Méthode standard - Attributs d'accès au tableau (AAA)
D'autres alternatives sont:
Format droit et rapide
Mauvais formats
la source
$xml->attributes()->{'field'}
,$xml->attributes()->field
et$f='field'; $xml->attributes()->$f;
sont les mêmes. Ne voyez aucune raison pour laquelle l'un est un bon format et un autre est faux.Utilisez
SimpleXMLElement::attributes
.La vérité est que le
get_properties
gestionnaire SimpleXMLElement est très important. Il n'y a pas de propriété nommée "@attributes", vous ne pouvez donc pas le faire$sxml->elem->{"@attributes"}["attrib"]
.la source
get_properties
gestionnaire). Très intéressant.Vous pouvez simplement faire:
la source
Si vous recherchez une liste de ces attributs, XPath sera votre ami
la source
Cela m'a aidé à convertir le résultat de simplexml_load_file ($ file) en une structure JSON et à le décoder:
la source
Malheureusement, j'ai une version unique (bloquée avec Gentoo pour le moment) de PHP 5.5, et ce que j'ai trouvé, c'est que
était la seule solution qui fonctionnait. J'ai essayé toutes les méthodes de Bora ci-dessus, y compris le format «Right & Quick», et elles ont toutes échoué.
Le fait que ce soit le format le plus simple est un plus, mais je n'ai pas aimé penser que j'étais fou d'essayer tous les formats que d'autres disaient fonctionnels.
Njoy pour ce que ça vaut (ai-je mentionné une construction unique?).
la source