iterer uniquement dans les sous-elements d'un xml (python 2.7)
bonjour!
Je souhaite parser un document XML pour placer les valeurs en gras dans un dictionnaires:
Citation:
<mat id="
F1" used="true" lib_name="F_1">
<isotope id="AAA" density="3.333"> </isotope>
<isotope id="BBB" density="4.444"></isotope>
<mat id="
F2" used="true" lib_name="F_2">
<isotope id="AAA" density="1.111"></isotope>
<isotope id="BBB" density="2.222"></isotope>
le format souhaité de mon dicitonnaire:
Code:
{'density':{'F1':{'AAA':3.333, 'BBB':4.444}, 'F2':{'AAA':1.111, 'BBB', 2.222}}}
Code:
1 2 3 4 5 6
| import xml.etree.ElementTree as ET
self.tree = ET.parse('test.xml')
self.root = self.tree.getroot()
for matXML in self.root.getiterator('mat'):
for isotopeXML in self.root.getiterator('isotope'):
XMLdict['density'][matXML.attrib.get('id')][isotopeXML.attrib.get('id')] = isotopeXML.attrib.get('density') |
Ce code retourne:
Citation:
{'density': {'F1': {'AAA': '1.111111', 'BBB': '2.222222'}, 'fuel2': {'AAA': '1.111111', 'BBB': '2.222222'}}}
parce que ma boucle
Code:
for matXML in self.root.getiterator('mat')
itère sur tous les 4 children <isotope> et non pas seulements sur les deux children 'AAA' et 'BBB' appartenant à un <mat> donné.
Savez vous comment régler ce problème?
Merci !