Wie nicht benötigte XML-Daten löschen und bereinigt schreiben?
Verfasst: Mittwoch 14. April 2021, 18:22
Hallo zusammen,
ich bin relativ neu in Python , werde aber ab jetzt wohl öfter vorbeischauen
Ich darf im Praktikum ein Projekt mit XML-Dateien bearbeiten. Leider erhalte ich ein fehlerhaftes Ergebnis bei meinem Versuch...
Hier ein eigenes XML-Beispiel:
Ich habe Codes erhalten und würde gerne die Datensätze filtern. Daten die die gewünschten Codes besitzen werden behalten, der Rest wird gelöscht.
A111 und A222 sind gesucht und bleiben bestehen. A333 ist unwichtig und somit wird der komplette Datensatz gelöscht, also auch <name>,<gruppe> und anschließend werden die verbliebenen Daten in eine neue Datei geschrieben.
Ich habe es wie folgt probiert:
Die Datei teilnehmerneu.xml ist leider komplett leer nach dem Vorgang. Hier steht nur <teilnehmer> </teilnehmer>.
Das Ergebnis sollte aber sein:
Ich bin mir nicht sicher, ob ich einen Fehler bei der if-Bedingung habe oder bereits bei der for-Schleife.
Vielleicht kann mir hier ja jemand weiterhelfen.
Danke!
VG
Hawky
ich bin relativ neu in Python , werde aber ab jetzt wohl öfter vorbeischauen
Ich darf im Praktikum ein Projekt mit XML-Dateien bearbeiten. Leider erhalte ich ein fehlerhaftes Ergebnis bei meinem Versuch...
Hier ein eigenes XML-Beispiel:
Code: Alles auswählen
<teilnehmer>
<daten>
<name>abc</name>
<code>A111</code>
<gruppe>1</gruppe>
</daten>
<daten>
<name>efg</name>
<code>A222</code>
<gruppe>2</gruppe>
</daten>
<daten>
<name>hij</name>
<code>A333</code>
<gruppe>3</gruppe>
</daten>
</teilnehmer>
A111 und A222 sind gesucht und bleiben bestehen. A333 ist unwichtig und somit wird der komplette Datensatz gelöscht, also auch <name>,<gruppe> und anschließend werden die verbliebenen Daten in eine neue Datei geschrieben.
Ich habe es wie folgt probiert:
Code: Alles auswählen
import xml.etree.ElementTree as ET
xmlfile = "teilnehmer.xml"
tree = ET.parse(xmlfile)
root = tree.getroot()
for daten in root.findall('daten'):
code = str(daten.find('code').text)
if code != ("A111","A222"):
root.remove(daten)
tree.write('teilnehmerneu.xml')
Die Datei teilnehmerneu.xml ist leider komplett leer nach dem Vorgang. Hier steht nur <teilnehmer> </teilnehmer>.
Das Ergebnis sollte aber sein:
Code: Alles auswählen
<teilnehmer>
<daten>
<name>abc</name>
<code>A111</code>
<gruppe>1</gruppe>
</daten>
<daten>
<name>efg</name>
<code>A222</code>
<gruppe>2</gruppe>
</daten>
</teilnehmer>
Vielleicht kann mir hier ja jemand weiterhelfen.
Danke!
VG
Hawky