Ich habe Probleme mit der Auswertung einer XML Datei. Ich werde mein Problem sehr detailliert beschreiben, da ich ein nicht allzu erfahrener Programmierer bin, und mir nicht sicher bin, ob ich, mit meiner Herangehensweise, überhaupt das erreichen kann, was ich mir vorstelle.
ich habe eine .xml Datei folgender Struktur:
Code: Alles auswählen
<RE-RT>...
<NAME>...</NAME>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
</RE-RT>
<RE-RT>...
<NAME>...</NAME>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
</RE-RT>
<RE-RT>...
<NAME>...</NAME>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
<Fehler>...</Fehler>
</RE-RT>
....
Mein Ziel ist es, zumindest vorerst, die Fehler auszulesen, jedoch mit dem zugehörigen Namen.
Bis jetzt bin ich soweit, dass mir die Fehler einzeln ausgegeben werden.
Code: Alles auswählen
from xml.dom import minidom
xmldoc = minidom.parse("xmldoc.xml")
rert = xmldoc.getElementsByTagName("RE-RT")
for nombre in rert:
bezeichnung = nombre.getElementsByTagName("NAME")[0]
print (bezeichnung.firstChild.data)
Mein Ansatz wäre dieser gewesen:
Code: Alles auswählen
for nombre in rert:
bezeichnung = nombre.getElementsByTagName("NAME")[0]
for malus in rert:
Fehler = malus.getElementsByTagName("Fehler")[0]
print (bezeichnung.firstChild.data, Fehler.firstChild.data)
Name1: Fehler1
Name1: Fehler2
Name2: Fehler4
Name2: Fehler12
Name2: Fehler34
....
Dies kommt aber lediglich auf die Meldung "for label in rert: TypeError: 'Element' object is not iterable"
Zudem:
Wenn kein Fehler nicht auftritt, steht
Code: Alles auswählen
<Fehler>Unused</Fehler>
Ich habe es mit
Code: Alles auswählen
l={"unused"}
Fehler not in l
Zu guter letzt würde mich interessieren, wie ich mir die ausgegebene Daten in eine Liste oder Array speichern lassen kann, um die dann in eine Excel oder .txt. Datei zu exportieren. Mit den Minidom Klassen geht es ja nicht, diese direkt in eine Datei ausgeben zu lassen, oder?!
Würde mich sehr freuen, wenn ihr mich erhellt.