![](https://secure.gravatar.com/avatar/28fca1ba1e6d4ec63b504656911e349a.jpg?s=120&d=mm&r=g)
Hallo, ich möchte euch mein Modul XML_Objects vorstellen. http://www.boa3d.de/python/modules/XML_Objects.php Es dient dazu, Dateien einer Applikation als Objekte in XML-Dateien zu speichern und wieder aus den Daten Objekte zu generieren. Eine Beschreibung des Moduls findet ihr auf der Seite. Ich würde mich über Anregungen und Kritik freuen. Betatester werden auch noch gesucht. Gruß Fritz _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/7708322cac4811bc7011977b88688eb3.jpg?s=120&d=mm&r=g)
Am Sat, Jul 24, 2004 um 02:40:17 CEST, fritz cizmarov schrieb:
ich möchte euch mein Modul XML_Objects vorstellen.
http://www.boa3d.de/python/modules/XML_Objects.php
Es dient dazu, Dateien einer Applikation als Objekte in XML-Dateien zu speichern und wieder aus den Daten Objekte zu generieren. Eine Beschreibung des Moduls findet ihr auf der Seite.
Hmm, klingt für mich wie Serialisierung, das macht doch schon pickle und cpickle, allerdings verwenden die kein XML dafür... Mein du wirklich "Dateien einer Applikation"? Dann könnte man ja z.b. ein stringIO Object auch damit serialisieren... kann natürlich sein das ich das falsch verstanden hab...
Ich würde mich über Anregungen und Kritik freuen. Betatester werden auch noch gesucht.
Hmm, das klingt net mal so schlecht finde ich, könnte man z.B. für Config Files gut gebrauchen, aber dann gleich noch mal ne Frage: Wie "lesbar" ist diese XML Datei? Alsö könnte man da auch notfalls was mit der Hand dran machen, oder ist das eher schlecht? Welche Python Version ist den das minimum?
Gruß
Fritz
mfg Betz Stefan -- Erst wenn die letzte LAN verboten, der letzte PC abgeschaltet ist und das letzte Gewaltspiel auf dem Index steht, werdet ihr feststellen, dass ihr eure Kinder doch erziehen müsst. _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/61e92745fc22d80ef4ee817034e447b1.jpg?s=120&d=mm&r=g)
Hallo, * Fritz Cizmarov <fritz@sol.at> [20040724 02:40 +0200]:
ich möchte euch mein Modul XML_Objects vorstellen.
http://www.boa3d.de/python/modules/XML_Objects.php
Es dient dazu, Dateien einer Applikation als Objekte in XML-Dateien zu speichern und wieder aus den Daten Objekte zu generieren. Eine Beschreibung des Moduls findet ihr auf der Seite.
Was ist Deine Motivation für dieses Modul? Es gibt ja schon andere, die diese Aufgabe auf eine ausgereifte Art erledigen. Eine kurze Suche ergibt z.B. gnosis.xml.pickle[1]. Kennst Du dieses Modul? Grundsätzlich würde ich mich für die Objektserialisierung auf die in der Python-Standard-Bibliothek bereits vorhandenen Module marshal, pickle, cPickle und shelve stützen und keinen eigenen grundlegenden Ansatz verfolgen. Zwei Bemerkungen noch zu Deinem Modul. Hast Du mal daran, das Modul unittest zu verwenden? Der in Deinem Modul enthaltene Test deckt ja nur einen kleinen Teil seiner möglichen Verwendung ab und sein Ergebnis muss dazu noch vom Benutzer manuell überprüft werden. Außerdem wären docstrings für die Funktionen und Methoden sehr hilfreich. Gruß Lutz [1] http://gnosis.cx/download/gnosis/xml/pickle/ _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/28fca1ba1e6d4ec63b504656911e349a.jpg?s=120&d=mm&r=g)
Hallo Lutz. meine Motivation ist 1. Spass am programmieren, 2. mal zu testen wozu Metaklassen fähig sind und 3. ein Modul zu machen, das es dem Programmierer, der es in seiner Applikation verwendet, so einfach wie möglich macht, seine Daten ohne unnützen zusätzlichen Ballast als XML-Daten zu speichern. Die Daten sollen dann auch noch vom Anwender oder anderen Programmen zu lesen und manipulieren sein, sonnst könnte man ja die Daten auch einfach als Binärdaten sichern. Wenn Du dir mal die erzeugten XML-Dateien von xml.marshall oder xml.pickle, bei Objekten mit Attributen und Unterobjekten, anschaust. Wirst Du sehen was ich meine. An der Dokumentation arbeite ich noch, wie auf der Seite zum Projekt zu sehen ist. Gruß Fritz Am Sun, 25 Jul 2004 11:56:52 +0200 Schrieb Lutz Horn <lutz.horn@gmx.de>:
Hallo,
* Fritz Cizmarov <fritz@sol.at> [20040724 02:40 +0200]:
ich möchte euch mein Modul XML_Objects vorstellen.
http://www.boa3d.de/python/modules/XML_Objects.php
Es dient dazu, Dateien einer Applikation als Objekte in XML-Dateien zu speichern und wieder aus den Daten Objekte zu generieren. Eine Beschreibung des Moduls findet ihr auf der Seite.
Was ist Deine Motivation für dieses Modul? Es gibt ja schon andere, die diese Aufgabe auf eine ausgereifte Art erledigen. Eine kurze Suche ergibt z.B. gnosis.xml.pickle[1]. Kennst Du dieses Modul?
Grundsätzlich würde ich mich für die Objektserialisierung auf die in der Python-Standard-Bibliothek bereits vorhandenen Module marshal, pickle, cPickle und shelve stützen und keinen eigenen grundlegenden Ansatz verfolgen.
Zwei Bemerkungen noch zu Deinem Modul. Hast Du mal daran, das Modul unittest zu verwenden? Der in Deinem Modul enthaltene Test deckt ja nur einen kleinen Teil seiner möglichen Verwendung ab und sein Ergebnis muss dazu noch vom Benutzer manuell überprüft werden. Außerdem wären docstrings für die Funktionen und Methoden sehr hilfreich.
Gruß Lutz
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/365fae57f8fd6feea79557127b992e36.jpg?s=120&d=mm&r=g)
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Fritz Cizmarov wrote: | Es dient dazu, Dateien einer Applikation als Objekte in XML-Dateien zu | speichern und wieder aus den Daten Objekte zu generieren. Eine | Beschreibung des Moduls findet ihr auf der Seite. | | Ich würde mich über Anregungen und Kritik freuen. Betatester werden auch | noch gesucht. Gefällt mir. Besser als die anderen xml serializiere die ich gesehen habe. Ich werde demnächst für meine Jukebox ein neues xml stream protocol schreiben und wohl deinen serialisier benutzen dafür, oder anpassen entsprechend. Was mir gut gefällt, ist daß es nicht "pythonartig" serialisiert. Vielleicht möchte jemand einmal eine GUI in nicht python schreiben und muß dann nicht mit komischen Namen arbeiten. Ich werde wohl eine Subclasse dafür schreiben, da intern alles GObject Klassen sind, und ich folglich eigendlich nur properties serialisieren möchte. Ich werde dir Bericht erstatten :) Gruß ~ Daniel - -- it takes, takes, takes and gives nihil back, nihil, nihil, nihil .. . .. ... . . .. . ... . .. . ... . . . pgp key @ http://files.poelzi.org/pgp.txt ED80 E53D 5269 4BB1 1E73 3A53 CBF9 A421 0A7B 003D -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) Comment: Using GnuPG with Debian - http://enigmail.mozdev.org iD8DBQFBA8nxy/mkIQp7AD0RAgAeAJ9KAiMoC82XzkC/t3RCAO0qcON8GwCdGncg xU996tWADFDgW0iqG023+ig= =Olb2 -----END PGP SIGNATURE----- _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/28fca1ba1e6d4ec63b504656911e349a.jpg?s=120&d=mm&r=g)
Hi Daniel, danke für Dein Feedback. Ich hab mich einfach an die OOP-Grundlagen erinnert, und daß die Objekte selber wissen sollten, wie sie als XML-Code auszusehen haben, was insbesondere bei komplexen Objekten IMHO vorteilhaft ist. Ein Objekt weiß schließlich selbst am besten, welche enthaltenen Daten zu speichern sind und was während der Laufzeit dazukommt. Gruß Fritz Am Sun, 25 Jul 2004 16:55:46 +0200 Schrieb "daniel.poelzleithner" <poelzi@poelzi.org>:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Fritz Cizmarov wrote:
| Es dient dazu, Dateien einer Applikation als Objekte in XML-Dateien zu| speichern und wieder aus den Daten Objekte zu generieren. Eine | Beschreibung des Moduls findet ihr auf der Seite. | | Ich würde mich über Anregungen und Kritik freuen. Betatester werden auch| noch gesucht.
Gefällt mir. Besser als die anderen xml serializiere die ich gesehen habe. Ich werde demnächst für meine Jukebox ein neues xml stream protocol schreiben und wohl deinen serialisier benutzen dafür, oder anpassen entsprechend.
Was mir gut gefällt, ist daß es nicht "pythonartig" serialisiert. Vielleicht möchte jemand einmal eine GUI in nicht python schreiben und muß dann nicht mit komischen Namen arbeiten.
Ich werde wohl eine Subclasse dafür schreiben, da intern alles GObject Klassen sind, und ich folglich eigendlich nur properties serialisieren möchte.
Ich werde dir Bericht erstatten :)
Gruß ~ Daniel
- -- it takes, takes, takes and gives nihil back, nihil, nihil, nihil
.. . .. ... . . .. . ... . .. . ... . . . pgp key @ http://files.poelzi.org/pgp.txt ED80 E53D 5269 4BB1 1E73 3A53 CBF9 A421 0A7B 003D -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) Comment: Using GnuPG with Debian - http://enigmail.mozdev.org
iD8DBQFBA8nxy/mkIQp7AD0RAgAeAJ9KAiMoC82XzkC/t3RCAO0qcON8GwCdGncg xU996tWADFDgW0iqG023+ig= =Olb2 -----END PGP SIGNATURE-----
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/dbdddb64dc47a7853e836edfed6b1f3f.jpg?s=120&d=mm&r=g)
Fritz Cizmarov wrote:
Hallo,
ich möchte euch mein Modul XML_Objects vorstellen.
http://www.boa3d.de/python/modules/XML_Objects.php
Es dient dazu, Dateien einer Applikation als Objekte in XML-Dateien zu speichern und wieder aus den Daten Objekte zu generieren. Eine Beschreibung des Moduls findet ihr auf der Seite.
Ich würde mich über Anregungen und Kritik freuen. Betatester werden auch noch gesucht.
Einiges von dem erinnert mich an mein eigenes XIST (http://www.livinglogic.de/Python/xist/), insbesondere die Konstruktor-Argumente (*args ist der Element-Content und **kw sind die Attribute), daß der Elementtyp gleich dem Klassennamen ist, aber überschrieben werden kann, daß die Attribute auf Klassenebene als Dictionary definiert werden (das war vor XIST 2.0 so) und daß man eine eigene XML-Konversionsmethode angeben kann. Fragen, die mir dazu kommen: Kann man ein anderes Encoding als UTF-8 zur Ausgabe verwenden? xml_char_data() kommt mir etwas seltsam vor: Da wird *zuerst* der Unicode-String encoded (in's Filesystem-Encoding), und *dann* wird da drin ein replace gemacht. Warum läßt Du das ganze nicht als Unicode? Daß from_xml() versucht herauszufinden, ob das Argument ein XML-String oder ein Dateiname ist, finde ich etwas unglücklich. einen UTF-16 encodeten XML-String kannst Du damit z.B. nicht parsen, obwohl's der Expat AFAICR eigentlich kann. Bis demnächst, Walter Dörwald _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/28fca1ba1e6d4ec63b504656911e349a.jpg?s=120&d=mm&r=g)
Hallo Walter, Am Sun, 25 Jul 2004 19:51:37 +0200 Schrieb Walter Dörwald <walter@livinglogic.de>:
Fritz Cizmarov wrote:
Hallo,
ich möchte euch mein Modul XML_Objects vorstellen.
http://www.boa3d.de/python/modules/XML_Objects.php
Es dient dazu, Dateien einer Applikation als Objekte in XML-Dateien zu speichern und wieder aus den Daten Objekte zu generieren. Eine Beschreibung des Moduls findet ihr auf der Seite.
Ich würde mich über Anregungen und Kritik freuen. Betatester werden auch noch gesucht.
Einiges von dem erinnert mich an mein eigenes XIST (http://www.livinglogic.de/Python/xist/), insbesondere die Konstruktor-Argumente (*args ist der Element-Content und **kw sind die Attribute), daß der Elementtyp gleich dem Klassennamen ist, aber überschrieben werden kann, daß die Attribute auf Klassenebene als Dictionary definiert werden (das war vor XIST 2.0 so) und daß man eine eigene XML-Konversionsmethode angeben kann.
Sowas wird bei einer ähnlichen Zielsetzung auch nicht ausbleiben. Ich hab mir inzwischen die Seite zu Deinem XIST angeschaut. Echt nicht schlecht, allerdings zielt Dein Modul ja eher auf Webprojekte während meines eher Anwendungsorientiert ist. Hintergrund bei meinem Modul ist die Verwendung in einer 3D-Applikation um 3D-Szenen zu speichern und wieder zu laden. Praktisch soll die Applikation, wenn's mal soweit ist total modular aufgebaut sein. Also die Objekte die damit bearbeitet werden, sollen aus Modulen kommen und der Anwender soll diese Module auch während der Laufzeit installieren können. Außerdem soll das Erstellen dieser Module auch so einfach wie möglich sein. Um dann die Objekte in einer Szene zu speichern genügt es, in 90% der Fälle, die Klassen welche die Objekte beschreiben von XMLObject abzuleiten, ohne weitere Registrierungsgeschichten oder sonst was.
Fragen, die mir dazu kommen: Kann man ein anderes Encoding als UTF-8 zur Ausgabe verwenden?
Gute Frage, da bin ich noch am testen. Vorgesehen ist es, dazu hab ich die globale Variable "encoding" definiert.
xml_char_data() kommt mir etwas seltsam vor: Da wird *zuerst* der Unicode-String encoded (in's Filesystem-Encoding), und *dann* wird da drin ein replace gemacht. Warum läßt Du das ganze nicht als Unicode?
Auch eine gute Frage, das schau ich mir noch genauer an. Ist eben noch Beta das Ganze.
Daß from_xml() versucht herauszufinden, ob das Argument ein XML-String oder ein Dateiname ist, finde ich etwas unglücklich. einen UTF-16 encodeten XML-String kannst Du damit z.B. nicht parsen, obwohl's der Expat AFAICR eigentlich kann.
Stimmt, wird überarbeitet.
Bis demnächst, Walter Dörwald
Danke für Dein Feedback. Gruß Fritz Cizmarov _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/5238a3732fd7663851110f536394a5c6.jpg?s=120&d=mm&r=g)
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Walter, Walter Dörwald wrote: | Einiges von dem erinnert mich an mein eigenes XIST Benutzt Du da inzwischen auch Metaklassen? Ich habe seid ewigen zeiten nicht merh hineingeschaut. - -- Schönen Gruß - Regards Hartmut Goebel | Hartmut Goebel | IT-Security -- effizient | | h.goebel@goebel-consult.de | www.goebel-consult.de | -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFBCPdg83WjhA1moMgRAq2MAJ9S7voIlMKv/Ruo5WGH8tWDZ/CDDgCfajez xJMioODWy7MCwMU8uqSA17o= =JwUV -----END PGP SIGNATURE----- _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/dbdddb64dc47a7853e836edfed6b1f3f.jpg?s=120&d=mm&r=g)
Hartmut Goebel wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi Walter,
Walter Dörwald wrote:
| Einiges von dem erinnert mich an mein eigenes XIST
Benutzt Du da inzwischen auch Metaklassen? Ich habe seid ewigen zeiten nicht merh hineingeschaut.
Ja, auch relativ vielen Ebenen: class Namespace(xsc.Namespace): xmlname = "foo" xmlurl = "http://www.foo.com/" class foo(xsc.Element): class Attrs(xsc.Element.Attrs): class class_(xsc.TextAttr): xmlname = "class" _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/dbdddb64dc47a7853e836edfed6b1f3f.jpg?s=120&d=mm&r=g)
Hartmut Goebel wrote: [Argl, einmal zu oft Return gedrückt :-(]
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi Walter,
Walter Dörwald wrote:
| Einiges von dem erinnert mich an mein eigenes XIST
Benutzt Du da inzwischen auch Metaklassen? Ich habe seid ewigen zeiten nicht merh hineingeschaut.
Ja, es gibt eigentlich auf allen Ebenen Metaklassen: class Namespace(xsc.Namespace): xmlname = "foo" xmlurl = "http://www.foo.com/" class foo(xsc.Element): class Attrs(xsc.Element.Attrs): class class_(xsc.TextAttr): xmlname = "class" Es gibt einen Metaklasse für Namespace, die sämtliche Elementklassen im Namespace managed, Metaklassen für die Node-Klassen, die für verschiedene Klassenattribute zuständig sind, usw. Bis demnächst, Walter Dörwald _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (6)
-
daniel.poelzleithner
-
Fritz Cizmarov
-
Hartmut Goebel
-
Lutz Horn
-
Stefan J. Betz
-
Walter Dörwald