XML Dateien Lesen / Schreiben: Beste Methode?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gondii
User
Beiträge: 24
Registriert: Freitag 11. September 2015, 05:56

Hallo,

Ich bin relativ frisch in Python und hab mal ne Frage zur Methode:

Ich bastel gerade an einer GUI, mit der ich verschiedene Konfigurationsdateien (XML) editieren will.
Das einlesen ist für mich kein Problem: Mit xml.dom.minidom kann ich das recht schnell coden.

Mein Problem ist, das modifizierte XML zurück in die Konfigurationsdatei zu schreiben:
In dem Moment wo ich die neuen Werte aus Textfeldern o.ä. aus meinem UI auslese,
weiß mein Programm nicht mehr, wo genau (innerhalb einer großen XML Datei) es die alten Werte ausgelesen hat.
Weil die Daten liegen als list oder dict vor, ohne jeglichen Bezug zu ihrem Ursprung (ein Pfad in Form von XPath oder ähnliches).

Dadurch wird es sehr mühsam, die Position in der XML-Datei wieder zu finden und dort die entsprechenden Änderungen vorzunehmen.

Gibt es da vielleicht eine einfachere Lösung, wie macht ihr sowas?

ps: Ich lese / schreibe die Konfiguration eines fremden (nicht von mir geschriebenen) Programms, ich darf also die Struktur nicht verändern.
BlackJack

@Gondii: Also erstmal ist die DOM-API nicht wirklich schön. In der Standardbibliothek gibt es doch die ElementTree-API, die ist wesentlich „pythonischer“.

Zum eigentlichen Problem: Du weisst doch wie man an die entsprechenden Elemente gelangt, denn Du hast die ja schon mal zum extrahieren der Werte gefunden‽ Ansonsten müsstest Du Dein Programm halt so umschreiben das sich das Modell die Elementobjekte merkt die verändert werden sollen und nicht nur die Werte extrahiert werden.
Gondii
User
Beiträge: 24
Registriert: Freitag 11. September 2015, 05:56

@ BlackJack: Ich hab die ElementTree-API nicht übersehen. Ich nutze die DOM-API nur aus Gewohnheit, weil ich eine ähnliche API aus anderen Sprachen schon kenne. Aber vielleicht sollte ich tatsächlich mal umsteigen :D
Antworten