Je crée une interface graphique pour l'API Eve Online en Python.
J'ai réussi à extraire les données XML de leur serveur.
J'essaie de saisir 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 la sortie est ci-dessous:
[<DOM Element: name at 0x11e6d28>]
Comment pourrais-je lui faire imprimer la valeur du nœud?
Réponses:
Ça devrait juste être
la source
Probablement quelque chose comme ça si c'est la partie de texte que vous voulez ...
La partie texte d'un nœud est considérée comme un nœud en lui-même placé en tant que nœud enfant de celui que vous avez demandé. Ainsi, vous voudrez parcourir tous ses enfants et 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 «blabla» et «znylpx»; d'où le "" .join (). Vous voudrez peut-être remplacer l'espace par une nouvelle ligne ou plus, ou peut-être par rien.
la source
vous pouvez utiliser quelque chose comme ça, ça a marché pour moi
la source
Je sais que cette question est assez ancienne maintenant, mais je pensais que vous auriez peut-être plus de facilité avec ElementTree
Je sais que ce n'est pas très spécifique, mais je viens de le découvrir, et jusqu'à présent, il est beaucoup plus facile de se déplacer que le minidom (car tant de nœuds sont essentiellement des espaces blancs).
Par exemple, vous avez le nom de la balise et le texte réel ensemble, comme vous vous en doutez probablement:
la source
La réponse ci-dessus est correcte, à savoir:
Cependant pour moi, comme d'autres, ma valeur était plus bas dans l'arbre:
Pour trouver cela, j'ai utilisé ce qui suit:
Lancer ceci pour mon simple fichier SVG créé avec Inkscape, cela m'a donné:
J'ai utilisé xml.dom.minidom, les différents champs sont expliqués sur cette page, MiniDom Python.
la source
J'ai eu un cas similaire, ce qui a fonctionné pour moi était:
name.firstChild.childNodes [0] .data
XML est censé être simple et c'est vraiment le cas et je ne sais pas pourquoi le minidom de python l'a fait si compliqué ... mais c'est comme ça que c'est fait
la source
Voici une réponse légèrement modifiée de Henrik pour plusieurs nœuds (c'est-à-dire lorsque getElementsByTagName renvoie plus d'une instance)
la source
La question a été répondue, ma contribution consiste à clarifier une chose qui peut dérouter les débutants:
Certaines des réponses suggérées et correctes utilisées
firstChild.data
et d'autres utilisées à lafirstChild.nodeValue
place. Au cas où vous vous demandez quelle est la différence entre eux, vous devez vous rappeler qu'ils font la même chose carnodeValue
c'est juste un alias pourdata
.La référence à ma déclaration peut être trouvée en tant que commentaire sur le code source de minidom :
la source
C'est un arbre et il peut y avoir des éléments imbriqués. Essayer:
la source