Puis-je utiliser SimpleXML & Xpath pour sélectionner directement un Attribut d'Éléments?
c'est à dire - je veux retourner une chaîne de caractères "jaune" en utilisant quelque chose comme expression xpath "//banane/@couleur" et l'exemple suivant xml...
<fruits>
<kiwi color="green" texture="hairy"/>
<banana color="yellow" texture="waxy"/>
</fruits>
$fruits = simplexml_load_string(
'<fruits>
<kiwi color="green" texture="hairy"/>
<banana color="yellow" texture="waxy"/>
</fruits>');
print_r($fruits->xpath('//banana/@color'));
produit
Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[color] => yellow
)
)
)
alors que je préférerais quelque chose comme...
Array
(
[0] => SimpleXMLElement Object
(
[0] => yellow
)
)
...alors que je n'ai pas besoin d'écrire un cas particulier dans l'application que je suis en train d'écrire.
merci beaucoup! 🙂
OriginalL'auteur significance | 2010-10-28
Vous devez vous connecter pour publier un commentaire.
Que je viens de faire votre test d'un coup parce que j'étais curieux et j'ai trouvé qu'il ne fait de produire de la chaîne de valeur
yellow
quand il est converti en chaîne de caractères.Il semblerait qu'il est juste la façon dont
SimpleXmlElement
attribut nœuds sont représentés. De sorte que vous pouvez l'utiliser comme(string) $found[0]
si vous n'êtes pas l'impression/l'écho directement.Bien sûr, si votre fonction sur la valeur résiduelle d'un
SimpleXMLElement
alors cela pourrait être un problème, je suppose. Mais je pense que juste se souvenir de jeter comme une chaîne de caractères lorsque vous allez utiliser le nœud de plus tard serait encore faisable.SI vous avez vraiment besoin d'une détaillé de l'interface pour les Nœuds qui prend en charge un Attribut comme un nœud, alors vous pouvez tout simplement passer à
DOMDocument
. Vous code obtenir plus de commentaires, mais la mise en œuvre est plus clair.OriginalL'auteur prodigitalson