Obtenir la valeur de l'Élément avec minidom avec Python
Je suis entrain de créer une autre interface pour la Veille en Ligne de l'API en Python.
J'ai réussi à tiré les données XML à partir de leur serveur.
Je suis en essayant de récupérer la valeur d'un nœud appelé "nom":
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print name
Cela semble trouver le nœud, mais le résultat est ci-dessous:
[<DOM Element: name at 0x11e6d28>]
Comment pourrais-je l'obtenir pour imprimer la valeur du nœud?
- Il commence à ressembler à la réponse à la plupart des "minidom" questions est "l'utilisation ElementTree".
Vous devez vous connecter pour publier un commentaire.
Il faut juste être
Probablement quelque chose comme ceci si c'est la partie de texte que vous voulez...
La partie texte d'un nœud est considéré comme un nœud lui-même placé comme un noeud enfant de celui que vous avez demandé. Donc, vous voulez aller à travers l'ensemble de ses enfants et de trouver tous les nœuds enfants qui sont des nœuds de texte. Un nœud peut avoir plusieurs nœuds de texte, par exemple.
Vous voulez à la fois de "blabla" et "znylpx'; d'où le " ".join(). Vous pouvez remplacer l'espace par un saut de ligne ou peut-être par rien.
vous pouvez utiliser quelque chose comme cela.Il a travaillé pour moi
Je sais que cette question est assez vieux maintenant, mais j'ai pensé que vous pourriez avoir un temps plus facile avec ElementTree
Je sais que c'est pas super précis, mais je viens de découvrir, et jusqu'à présent, il est beaucoup plus facile d'obtenir ma tête autour de la minidom (puisque le nombre de nœuds est essentiellement un espace blanc).
Par exemple, vous avez le nom de la balise et le texte ensemble, comme vous le feriez probablement s'attendre:
La réponse ci-dessus est correcte, à savoir:
Mais pour moi, comme les autres, ma valeur a été plus bas dans l'arborescence:
Pour trouver cela, j'ai utilisé les éléments suivants:
L'exécution de ce pour mon simple SVG fichier créé avec Inkscape cela m'a donné:
J'ai utilisé xml.dom.minidom, les différents champs sont expliqué sur cette page, MiniDom Python.
J'ai eu un cas similaire, ce qui a fonctionné pour moi a été:
nom.firstChild.childNodes[0].les données
XML est censé être simple, et il est vraiment et je ne sais pas pourquoi python minidom fait-il si compliqué... mais c'est comment il est fait
Ici est légèrement modifié pour répondre à Henrik pour plusieurs nœuds (ie. lorsque getElementsByTagName retourne plus d'une instance)
La question a été posée, ma contribution consiste à clarifier une chose qui peut confondre les débutants:
Certains l'ont suggéré, et les réponses correctes utilisé
firstChild.data
et d'autres ont utiliséfirstChild.nodeValue
à la place. Dans le cas où vous vous demandez quelle est la différence entre eux, vous devez vous rappeler qu'ils font la même chose parce quenodeValue
est juste un alias pourdata
.La référence à ma déclaration peut être trouvé comme un commentaire sur le le code source de minidom: