XML ElementTree: speichern

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
Nergal
User
Beiträge: 72
Registriert: Montag 6. Oktober 2008, 14:02

Hallo,

ich lese auf zwei Arten XML ein.
Einmal aus einer Datei:

Code: Alles auswählen

XMLTree = ElementTree.parse(Dateiname)
Und einmal aus einem String:

Code: Alles auswählen

XMLTree  = ElementTree.fromstring(String)
Wenn ich den Inhalt nun über

Code: Alles auswählen

XMLTree.write(Dateiname)
abspeichern möchte, geht das nur wenn ich die Daten aus einer Datei eingelesen habe. Nicht aber wenn sie aus einem String kommen.

Was mache ich falsch?
Habe schon einige Alternativen ausprobiert, die aber alle nicht das gewünschte Ergebnis erzielt haben.


Gruß
Nerga
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wie wärs mal mit einer Fehlermeldung? "Geht nicht" ist da wenig hilfreich ...
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Hyperion hat geschrieben:"Geht nicht" ist da wenig hilfreich ...
Vor allem, da es genau so funktionieren sollte, denn das sind nur zwei verschiedene Erzeugungsmethoden.
Ist der Dateiinhalt denn mit dem des Strings identisch? Wenn nicht, würde ich darauf tippen, dass dein String schlicht nicht well-formed (oder noch schlimmer) ist.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Warum nicht einfach mal die beiden Variablen XMLTree vergleichen nachdem sie eingelesen sind.

Einfach mal rausprinten.

Wenn Sie gleich, sind sollte auch das schreiben gleichermassen funktionieren.
Nergal
User
Beiträge: 72
Registriert: Montag 6. Oktober 2008, 14:02

Der Inhalt des Strings ist der Inhalt der XML-Datei (copy & paste).

Allerdings sehe ich gerade, daß er bei der fromstring Methode nur ein Element anlegt und keinen xml.etree.ElementTree.ElementTree.
Dann macht auch die Fehlermeldung Sinn:
AttributeError: _ElementInterface instance has no attribute 'write'

Habe das Problem nun so gelöst:

Code: Alles auswählen

Temp = ElementTree.fromstring(String)
XMLTree = ElementTree.ElementTree(Temp)
Danke für die Anregungen.

Gruß
Nergal
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Exemplare werden klein geschrieben...
Antworten