Seite 1 von 1

XML ElementTree: speichern

Verfasst: Montag 9. Februar 2009, 17:31
von Nergal
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

Verfasst: Montag 9. Februar 2009, 18:45
von Hyperion
Wie wärs mal mit einer Fehlermeldung? "Geht nicht" ist da wenig hilfreich ...

Verfasst: Montag 9. Februar 2009, 19:22
von cofi
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.

Verfasst: Montag 9. Februar 2009, 19:38
von hendrikS
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.

Verfasst: Dienstag 10. Februar 2009, 08:30
von Nergal
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

Verfasst: Dienstag 10. Februar 2009, 12:41
von snafu
Exemplare werden klein geschrieben...