Python string,dict,list und Co. <-> XML

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

modelnine hat geschrieben:Das iss nicht böse gemeint, und ich weiß dass der Entwickler von PyXO auch hier im Forum ist. Nur find ich das Design von PyXO absolut unsauber und unpythonisch, deswegen würde ich einen riesengroßen Bogen drum machen.
Der Entwickler von PyXO ist nicht mehr in diesem Forum, das ist auch die letzte Version von PyXO gewesen :(

Derweil werf ich noch EaseXML ein, vielleicht mag sich das auch noch jemand ansehen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Der Entwickler von PyXO ist nicht mehr in diesem Forum, das ist auch die letzte Version von PyXO gewesen
Okay, blackbird hat mich gerade aufgeklärt, und ich habs dann auch irgendwann geschnallt, langsam wie ich bin (damals gehörte ich noch nicht zum Python-Forum). Vielleicht wärs an der Zeit dass jemand PyXO aufgreift?
--- Heiko.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

modelnine hat geschrieben:Vielleicht wärs an der Zeit dass jemand PyXO aufgreift?
Tut jens das nicht schon?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Ja und nein. Soweit ich das verstehe checkt er's ja nur in subversion ein. Ich habs nicht so verstanden dass er ab jetzt Maintainer dafür sein will. Aber, okay, vielleicht hab ich ihn auch falsch verstanden... bzw. sollte jens sich vielleicht mal dazu äußern... Wenn's um ein Binärformat geht hab ich selbt auch schon einen serializer geschrieben, wenn bedarf besteht kann ich die Quellen auch mal gerne posten.
--- Heiko.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Tja, ob ich jetzt der "Maintainer" von PyXO werden will, weiß ich nicht. Kommt darauf an, ob ich das Skript überhaupt verstehen werde. Ich hab z.B. mit Metaclassen bisher nix gemacht.
modelnine hat geschrieben:Da ist gnosis.xml.pickle erheblich besser
Das mag sein, aber erstens ist die Webseite von dem, was für'n Ar*** und zweitens ist das gesammte Paket 918KB groß, wärend PyXO eine Datei mit 22,4KB ist...
Aber gut, ich hab mir das mal angesehen und man kann gnosis.xml.pickle etwas abspecken, zumindest auf 28 Dateien und 134KB. Ist aber im Verhältnis noch immer sehr schlecht!

Leider verstehe ich PyXO noch nicht wirklich, aber ich denke schon, das ich ihm das pickle Interface bei bringen kann...

Ich möchte doch nur eine dumpString() und loadString() Methode einpflanzen. Dabei produziert dumpString() die XML-Daten und liefert sie als String zurück und loadString() erstellt aus einem XML-String wieder das Python Objekt.

EDIT: Beim studieren der Doku von EaseXML hab ich nichts gefunden, was so funktionieren kann, wie ein XML-pickle...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Mir geht's nicht prinzipiell um das pickle-Interface, was ich nicht umbedingt das beste von Welt finde. Mir geht's schlicht und ergreifend darum dass ein neues Objekt die serialisierten Daten als __init__(**kwargs) kriegt, das ist grausam, und verkompliziert die Logik in __init__ nur absolut unnötig.

Vielleicht, als kleine Anregung, kann ich Dich mal auf ein altes Projekt von mir verweisen (Flatten), welches ein pickle-ähnliches Protokoll implementiert um Daten zu serialisieren, aber ein Binärformat draus macht (was ja eben nicht das ist was Du willst). Warum Du Dir das mal vielleicht angucken solltest ist die Art und Weise wie Daten serialisiert werden:

http://switch.dl.sourceforge.net/source ... .1.tar.bz2

Das Protokoll was es eben für die Serialisierung einer Klasse implementiert ist vielleicht nicht das schönste, aber sehr, sehr sauber, zumindest in meinen Augen...

Das ganze kann noch ein bissel mehr (wie zum Beispiel klassenunabhängige Serialisierung über Registrierung von Klassen mit Namen, Serialisierung von Klassenbäumen, wo jede Basisklasse unabhängig serialisiert und geladen wird, und Signierung/Verschlüsselung von Teilen des Pickles, weiß aber nicht ob die Version die auf SF steht das kann, wenn nicht dann muß ich noch mal graben), aber das ist ja nicht umbedingt das was Du brauchst. Vielleicht aber trotzdem interessant mal zu vergleichen mit PyXO.
--- Heiko.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

modelnine hat geschrieben:Mir geht's schlicht und ergreifend darum dass ein neues Objekt die serialisierten Daten als __init__(**kwargs) kriegt, das ist grausam, und verkompliziert die Logik in __init__ nur absolut unnötig.
Ich weiß zwar nicht genau was du damit meinst, aber ich glaube das ist ein Teil von PyXO den ich eigentlich überhaupt nicht nutzten möchte. In der readme ist ganz unten das mit dem Vector(PyXO.Object). Es ist ja irgendwie eine eigene Daten-Klasse, wie die buildins dict, tuple und Co.

Ich wüßte allerdings nicht, warum ich eigene Datenklasse in der Form erzeugen sollte. Das liegt wohl daran, das ich generell solche Dinge nicht wirklich mache. Das höchste der Gefühle ist es bei mir, wenn ich von dict Ableite und so meine eigene Datenklasse baue. Wobei das wahrscheinlich nicht gerade der pyothischste Weg ist, nehme ich an...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Ich möchte doch nur eine dumpString() und loadString() Methode einpflanzen. Dabei produziert dumpString() die XML-Daten und liefert sie als String zurück und loadString() erstellt aus einem XML-String wieder das Python Objekt.
Bitte die Namen dumps() und loads() benutzen, dann ist das auch pickle-kompatibel.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten