Accéder @attribut de SimpleXML
Je vais avoir un problème pour accéder à la @attribute
section de mon objet SimpleXML. Quand je var_dump
l'ensemble de l'objet, je reçois le bon de sortie, et quand je var_dump
le reste de l'objet (les balises imbriquées), j'obtiens le bon résultat, mais lorsque j'ai suivi la doc et var_dump
$xml->OFFICE->{'@attributes'}
, je reçois un objet vide, malgré le fait que le premier var_dump
montre clairement qu'il y a des attributs de sortie.
Quelqu'un sait ce que je fais de mal ici/comment je peux faire ce travail?
- var_dump() est trompeuse, quand il s'agit de SimpleXML. Ne prenez pas de sa sortie littéralement. Aussi, vous ne pouvez accéder à des attributs en utilisant un tableau? par exemple, $xml->BUREAU['MyAttribute']?
- si vous souhaitez utiliser ['@'attributs] vous avez besoin de jeter le SimpleXMLElement à la matrice de la première
- Un autre l'Accès SimpleXML Attribut de renvoi d'une question ("Comment obtenir la valeur d'un attribut à partir du fichier XML en PHP?")
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir les attributs d'un élément XML en appelant les attributs de fonction() sur un nœud XML. Vous pouvez ensuite var_dump la valeur de retour de la fonction.
Plus d'infos au php.net
http://php.net/simplexmlelement.attributes
Exemple de code à partir de cette page:
$b
sera unSimpleXMLElement
objetprint_r
etvar_dump
vous donnera des choses étranges. Vous pouvez le jeter comme une chaîne de caractères (ou ce que vous voulez) pour contourner le problème.Essayer cette
attributes()
sur l'objet correspondant à la droite de la balise dans votre XML. Comme si vous avez<root><tag attr="a">b</tag></root>
alors vous devez faire$xml->tag->attributes()->attr
pour y accéder.current($xml->attributes(current($xml->getNamespaces(true)))->noNamespaceSchemaLocation)
pour récupérer concrètement, le schéma attributJ'ai utilisé avant, donc beaucoup de fois pour arriver
@attributes
comme ci-dessous et il a été un peu plus long.Il devrait être plus facile et vous pouvez obtenir les attributs suivants en format à la fois:
Façon Standard - Baie-d'Accéder à des Attributs (AAA)
D'autres alternatives sont:
Droit & Format Rapide
Mal De Formats
$xml->attributes()->{'field'}
,$xml->attributes()->field
, et$f='field'; $xml->attributes()->$f;
sont les mêmes. Ne vois pas pourquoi l'un est d'un bon format et un autre est mauvais.Utilisation
SimpleXMLElement::attributs
.La vérité est, la SimpleXMLElement
get_properties
gestionnaire des mensonges gros temps. Il n'y a pas de propriété nommée "@attributes", de sorte que vous ne pouvez pas faire$sxml->elem->{"@attributes"}["attrib"]
.get_properties
gestionnaire). Très intéressante.Il vous suffit de faire:
Si vous êtes à la recherche pour obtenir une liste de ces attributs si, XPath sera votre ami
Malheureusement j'ai un unique de construire (coincé avec Gentoo pour le moment) de PHP 5.5, et ce que j'ai trouvé était que
était la seule solution qui a fonctionné. J'ai essayé toutes Bora méthodes ci-dessus, y compris le " Droit & Rapide format, et ils ont tous échoué.
Le fait que c'est le meilleur format est un plus, mais n'en profitez pas penser que j'étais fou d'essayer tous les formats d'autres disaient travaillé.
Njoy pour ce que sa vaut le coup (ai-je mentionné une construction unique?).
Il m'a aidé à convertir le résultat de simplexml_load_file($fichier) dans une Structure JSON et le décoder dos: