[Python-de] XML Objects - Persistenz - wie?

Felix Schwarz felix.schwarz at web.de
Di Dez 31 15:13:43 CET 2013


Am 31.12.2013 09:46, schrieb Thomas Lehmann:
> Es ist nicht super kompliziert aber auch nicht ganz trivial. Stichworte wie
> Typkonvertierung, Listen und DIctionaries machen das ganze durchaus 
> komplexer als man denkt. Ich taste mich halt ran. Dachte nur es gäbe schon 
> sowas.

Ich habe mal spaßeshalber mit soapbox etwas rumgespielt und dabei kam dann das
hier raus:
https://gist.github.com/FelixSchwarz/8197203

Ich bin natürlich voreingenommen, aber ich würde dir einen weiteren Blick auf
soapbox empfehlen. Falls du schon ein XML-Schema hast, kannst du mit "xsd2py"
dir auch ein soapbox-Modell generieren lassen (allerdings oft unvollständig
bzw. mit kleineren Fehlern).

Allerdings will ich nicht vorenthalten, dass auch soapbox immer wieder
Schwächen hat: So ist es mir z.B. nicht gelungen, die actors tatsächlich als
Liste abzulegen. Es gibt zwar xsd.ListElement, aber dann gibt es nicht den von
dir gewünschten <actors> container. Vermutlich war das nie ein Anwendungsfall
für die ursprünglichen Autoren.

> Klar ... trivial ist es einen DOM tree zu lesen/schreiben oder mit
> marshalling und Ähnlichen kann man es auch einfach ... :) ... ich wollte
> eben XML weil es ein standardisiertes Format ist. Eigentlich will ich sogar
> in der Lage sein bspw. zwischen XML und JSON nahtlos wechseln zu können
> (später); d.h. im CLient code steht dann nicht mehr direkt toXML ...

Das fand ich früher auch mal gut, bin da inzwischen deutlich vorsichtiger.
Viele Bibliotheken beschränken sich dann auf den kleinsten gemeinsamen Nenner,
so dass ich dann in der Vergangenheit an unerwarteten Stellen gegen eine Wand
gelaufen bin. Positive Ausnahmen: passlib und SQLAlchemy.

Trotzdem sollte man natürlich die Details der Serialisierung möglichst
konzentriert im Code stehen habe, dafür bevorzuge ich tatsächlich marshalling.

fs


Mehr Informationen über die Mailingliste python-de