Je travaille avec XML et Python pour la première fois. Le but ultime est d'envoyer une requête à un service REST, de recevoir une réponse en XML, d'analyser les valeurs et d'envoyer des emails en fonction de ce qui a été retourné. Cependant, le service REST n'est pas encore en place, donc pour l'instant j'expérimente avec un fichier XML enregistré sur mon disque C.Essayer d'analyser un fichier XML avec Python - qu'est-ce que je fais de mal?
J'ai un simple code, et je ne sais pas pourquoi cela ne fonctionne pas.
Ceci est mon fichier xml ("xmltest.xml"):
<Response>
<exitCode>1</exitCode>
<fileName>C:/Something/</fileName>
<errors>
<error>Error generating report</error>
</errors>
</Response>
Ceci est mon code à ce jour:
from xml.dom import minidom
something = open("C:/XMLTest.xml")
something = minidom.parse(something)
nodeList = []
for node in something.getElementsByTagName("Response"):
nodeList.extend(t.nodeValue for t in node.childNodes)
print nodeList
Mais les résultats impriment sont ...
[u'\n\t', None, u'\n\t', None, u'\n\t', None, u'\n']
Qu'est-ce que je fais mal?
J'essaie d'obtenir les valeurs de noeud. Y a-t-il une meilleure manière de faire cela? Existe-t-il une méthode intégrée en Python pour convertir un fichier xml en un objet ou un dictionnaire? J'aimerais obtenir toutes les valeurs, de préférence avec les noms ci-joints.
C'est ce que j'attendrais du code que vous avez posté pour imprimer. Que voudriez-vous que les résultats soient? – katrielalex
@Katrielalex - J'essaie d'obtenir les valeurs des nœuds - 1, "C:/Quelque chose", etc. Comment puis-je accomplir cela? Y a-t-il un meilleur moyen? Existe-t-il un moyen facile d'obtenir une sorte de dictionnaire ou d'objet avec les noms de noeud et les valeurs? – froadie
Voir ci-dessous. Malheureusement, il n'y a pas de moyen par défaut de le convertir en dictionnaire, car le format XML est trop flexible pour qu'il y ait un moyen raisonnable de le faire. Vous devez câbler les indices des nœuds (par exemple, que se passerait-il s'il y avait deux nœuds 'exitCode'?) – katrielalex