Disons que j'ai un fichier XML comme suit. J'ai besoin de lire ce fichier dans un dictionnaire quelque chose comme ça. P>
dict["A.B1.C1"] = "blah"
dict["A.B1.C2"] = "blah"
dict["A.B2.C1"] = "blah"
dict["A.B2.C2"] = "blah"
4 Réponses :
I Habituellement analyser XML à l'aide du module Elementtree sur la bibliothèque standard. Il ne vous donne pas un dictionnaire, vous obtenez une structure DOM beaucoup plus utile qui vous permet d'itérer sur chaque élément pour les enfants.
{'A1': '\n \n <...>\n', 'A1.B1': '\n \n <...>\n ', 'A1.B1.C1': '"blah"', 'A1.B1.C2': '"blah"', 'A1.B2': '\n \n <...>\n ', 'A1.B2.C1': '"blah"', 'A1.B2.C2': '"blah"'}
Typo ci-dessus, devrait être "gretroot ()", pas "get_root ()"
J'utilise habituellement le bibliothèque LXML.Objectify pour une analyse rapide XML.
avec votre String XML, vous pouvez faire: p> puis obtenir des éléments individuels à l'aide d'une interface de dictionnaire: p> ou, si Vous préférez: P> value = root.A[0].B[0].C[0]
Consultez les réponses à Un moyen vraiment simple de traiter avec XML à Python? , vous en trouverez probablement l'un d'entre eux pour répondre directement à vos besoins. P>
Vous pouvez utiliser Bibliothèque forte> en Python. tong.parse () strud> convertit un document XML en un objet Python Ceci prend un fichier XML en entrée et renvoie un objet Python qui représente ce document XML. P> prête Après un fichier XML à titre d'exemple et le nom comme test_xml.xml p> >>>import untangle
>>>input_file = "/home/tests/test_xml.xml" #Full path to your xml file
>>>obj = untangle.parse(input_file)
>>>obj.A.B[0].C[0].cdata
u'"blah1"'
>>> obj.A.B[0].C[1].cdata
u'"blah2"'
>>> obj.A.B[1].C[0].cdata
u'"blah3"'
>>> obj.A.B[1].C[1].cdata
u'"blah4"'
Semble étroitement liée à ces questions: Modification XML comme dictionnaire Python? (comme indiqué par Leniel), et Un moyen vraiment simple de traiter avec XML dans Python? (comme indiqué par NAS)