Comment puis-je obtenir un élément XML de l'attribut avec Perl XML::Simple?
J'ai un script Perl qui lit un fichier XML qui n'ont pas de contenu, seuls les attributs de l'élément.
Comme ceci:
<league>
<game name="bla"/>
</league>
Maintenant j'essaie d'obtenir le jeu de l'attribut "name".
J'ai essayé d'utiliser $xml->{league}->{game}->{name}
et $xml->{league}->{game}->['name']
mais ils sont tous les deux pas de travail. Quelque chose à propos d'un problème de hachage.
Est qu'il ya quelqu'un qui peut m'aider à obtenir la valeur?
- Montrez votre programme.
Vous devez vous connecter pour publier un commentaire.
Bien, à partir du XML que vous avez posté, j'obtiens ceci:
Il ne semble pas être un strict/avertissements question, parce qu'il apparaît lorsque je commente mon USUW out.
Mais si vous avez le droit de balises, cela devrait fonctionner:
Et si je l'appelle
XMLin
avecKeepRoot => 1
, vous le trouverez à:Si vous éprouvez de la difficulté à trouver comment les données sont en cours de lecture, faire ceci:
Puis utilisez le chemin d'accès aux structures présentées.
Remarque:
aurait dû mourir avec: "un TABLEAU Pas de référence à" même sans message d'avertissement est activé.
['string']
est une référence à un tableau avec la chaîne'string'
comme le seul élément. Et, si$xml->{league}{game}
ont été un tableau, il serait mort avec un non-numérique d'erreur, parce que les chaînes ne traite pas des tableaux.Data::Dumper
.['name']
puis c'est la même chose que:$array_ref->[0] = 'name'
, si vous voyez des crochets, c'est dans un tableau, bien que je ne comprends pas pourquoi il n'aurait pas l'attribut valeur ("blah"
dans le jouet cas) près de par elle.J'ai l'habitude de les instancier mon XML::Simple objets comme ceci:
il permet à la structure d'être cohérent entre la unique et, éventuellement, plusieurs sous-éléments. Avec ces paramètres, ce code est votre valeur:
J'ai ajouté un autre jeu de tag, et un attribut sur le tag de la ligue comme un exemple, c'est le xml:
Et la Data::Dumper de sortie est:
KeyAttr => 1
n'a pas beaucoup de sens. Peut-être vous direKeyAttr => {}
.