Hallo ich möchte mit Python2.5 eine XML - Datei schreiben. Da PyXML nicht weiter für zukünftige Python - Versionen ab 2.5 zur Verfügung steht und die Module nur sehr buggy arbeiten, wollte ich mal fragen welche Alternativen man hat?
Mein Problem ist, dass kein Modul vernünftig arbeitet und mir die trotz createElementNS erstellten Elemente die Namespaces nicht in die Datei reinschreibt.
Ich habs mit xml.dom, xml.dom.minidom, xml.sax.utils und xml.etree.ElementTree versucht, doch ohne Erfolg.
Kann mir da jemand weiterhelfen, ich brauch diese Namespace - Attribute.
Python und vernünftige DOM2 Unterstützung (fehlende NS's)
Das ist alles nicht sehr zufriedenstellend, ich dachte Python wäre modern, doch eine vollständig Unterstützung von aktuellen Webstandards fehlt völlig.
Gut 4Suite geht einigermaßen, ist aber auch sehr umständlich an einigen Ecken.
Mal schaun ob Ruby Module hat, die den dom3 unterstützen und mit denen man vernünftige XML schreiben kann.
Entschuldigt meinen Unmut nach dem 1. Posting.
Grüße
Gut 4Suite geht einigermaßen, ist aber auch sehr umständlich an einigen Ecken.
Mal schaun ob Ruby Module hat, die den dom3 unterstützen und mit denen man vernünftige XML schreiben kann.
Entschuldigt meinen Unmut nach dem 1. Posting.
Grüße
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Tja. Wer zu dumm ist Dokumentation zu lesen...zipdrive hat geschrieben:Das ist alles nicht sehr zufriedenstellend, ich dachte Python wäre modern, doch eine vollständig Unterstützung von aktuellen Webstandards fehlt völlig.
http://paste.pocoo.org/show/542/
Und hey. Das ist ein Standard. Hoops. Wenn dir das zu aufwändig/umständlich ist schau dir halt ElementTree an der, hey, auch Teil Pythons ist?
Nein.Entschuldigt meinen Unmut nach dem 1. Posting.
TUFKAB – the user formerly known as blackbird
Hi und Willkommen im Forum.
BlackBird hat ja schon ein Beispiel zu xml.dom gepostet. Entspricht das deiner Vorstellung? Hast du dir das xml.etree.ElementTree wirklich ganz genau angesehen? Damit hatte ich letztes Jahr was in Richtung RSS-Feeds gemacht und hatte null Probleme.
lg
sape
Warum? Wenn du was nicht kapierst frag doch nach und es werden dir sicherlich viele hier im Forum dabei helfen An Python und dem XML Package liegt es sicherlich nicht Ich kenne mich zwar nicht mit XML so gut aus, aber wage zu behaupten das dass mitgelieferte Package schon 1A ist und das sich vorallem die DOM Implementierung an dem Standard hält, weil sonst ganz schnell von den Pythonisten daran was geändert werden würde -> Darauf kannst du dich verlassen!zipdrive hat geschrieben:Das ist alles nicht sehr zufriedenstellend,
Ist es auchzipdrive hat geschrieben: ich dachte Python wäre modern,
Echt? Was genau vermisst du in Python an aktuellen webstandards (was aber nichts mit Python direkt zu tun hat). Meiner Meinung nach deckt alleine schon die Standardbibliothek so ziemlich fast jeden Bereich ab. Und wem das nicht genügt der kann zusätzlich auf die 20K andren Libs/Module zurückgreifen die es im Web so gibt. -> Z.B. hier: http://cheeseshop.python.org/pypi?%3Aaction=browsezipdrive hat geschrieben: doch eine vollständig Unterstützung von aktuellen Webstandards fehlt völlig.
Naja, wie wäre es den mal wenn du uns mal zeigst was du bisher so hast und was du gerne an den stellen machen würdest? Ich würde nicht in vornherein davon ausgehen das dass XML Package die schuld daran trägt, sondern das du da was nicht richtig machst.Entschuldigt meinen Unmut nach dem 1. Posting.
BlackBird hat ja schon ein Beispiel zu xml.dom gepostet. Entspricht das deiner Vorstellung? Hast du dir das xml.etree.ElementTree wirklich ganz genau angesehen? Damit hatte ich letztes Jahr was in Richtung RSS-Feeds gemacht und hatte null Probleme.
lg
sape
Wo genau ist da jetzt der Zusammenhang zwischen XML-Namespaces und Webstandards? Etwa, weil man bei XHTML den Namespace angibt?
Und was "modern" betrifft, so habe ich noch keine so schöne Möglichkeit gefunden, mit XML zu arbeiten, wie sie ET bietet. Ob man eine Library unbedingt als Eigenschaft einer Programmiersprache betrachten muss (auch wenn das Hinzufügen von ET zur Standarddistribution kürzlich erfolgte), sei mal dahingestellt.
Und was "modern" betrifft, so habe ich noch keine so schöne Möglichkeit gefunden, mit XML zu arbeiten, wie sie ET bietet. Ob man eine Library unbedingt als Eigenschaft einer Programmiersprache betrachten muss (auch wenn das Hinzufügen von ET zur Standarddistribution kürzlich erfolgte), sei mal dahingestellt.
Ok vielleicht könnt ihr ja meine Problem, die mir so aufgefallen sind lösen.
Mit ElementTree kann man ansich recht fix XML - Dokumente erstellen, dank _namespace_map kann man ja uri's mit den entsprechenden Prefixen ausstatten. Hier stehen dann auch alle NS - Attribute im Tree.
Wie kann man die Ausgabe bei ElementTree formatieren, ich möchte Einrückungen haben.
Dann speichere ich diesen Tree mit write.
Wie kann ich jetzt diese XML wieder auslesen, es sollen mir mit dem Dokument der DOM zur Verfügung stehen und irgendwie muss ich den veränderten Baum dann wieder speichern können! Wie macht man das am besten?
Grüße
Mit ElementTree kann man ansich recht fix XML - Dokumente erstellen, dank _namespace_map kann man ja uri's mit den entsprechenden Prefixen ausstatten. Hier stehen dann auch alle NS - Attribute im Tree.
Wie kann man die Ausgabe bei ElementTree formatieren, ich möchte Einrückungen haben.
Dann speichere ich diesen Tree mit write.
Wie kann ich jetzt diese XML wieder auslesen, es sollen mir mit dem Dokument der DOM zur Verfügung stehen und irgendwie muss ich den veränderten Baum dann wieder speichern können! Wie macht man das am besten?
Grüße
Eine simple prettyprint-Funktion gibt's beim Effbot. Die kann man aber nicht mehrfach anwenden. Prettyprinting ist sowieso so eine Sache die eigentlich ein DTD oder Schema benötigt um richtig funktionieren zu können. Man muss schliesslich wissen wo man "whitespaces" einfach so einfügen darf und wo nicht.zipdrive hat geschrieben:Wie kann man die Ausgabe bei ElementTree formatieren, ich möchte Einrückungen haben.
Na das XML einfach wieder parsen. Ich verstehe das Problem jetzt nicht so ganz!?Dann speichere ich diesen Tree mit write.
Wie kann ich jetzt diese XML wieder auslesen, es sollen mir mit dem Dokument der DOM zur Verfügung stehen und irgendwie muss ich den veränderten Baum dann wieder speichern können! Wie macht man das am besten?
gut ich weiß wie ich eine Datei zu parsen habe, aber wie kann man das modifizierte Dokument wieder speichern, ich hab nichts passendes gefunden, womit ich das machen kann.
Kannst du vielleicht mal ein Bsp geben, wenn ich "myxml.xml" öffnen, bearbeiten und wieder speichern möchte!?
Grüße
Kannst du vielleicht mal ein Bsp geben, wenn ich "myxml.xml" öffnen, bearbeiten und wieder speichern möchte!?
Grüße
Mit ``write``?
http://docs.python.org/lib/elementtree- ... l#l2h-1978
http://docs.python.org/lib/elementtree- ... l#l2h-1978
lgwrite( file[, encoding])
Writes the element tree to a file, as XML. file is a file name, or a file object opened for writing. encoding is the output encoding (default is US-ASCII).
Ok so kann man es vielleicht mit EmenetTrees machen, doch wie geht das wenn ich zb mit 4suite ein Dokument öffne, bearbeite und speichern möchte. Soweit ich die Dokumentation überblickt habe gibt es keine Möglichkeit ein geparstes Dokument wieder abzuspeichern, auf ganau das selbe File. Oder muss man da irgendwelche Kunstkniffe anwenden?
Die Dokumentation hast Du aber schon gelesen, oder? Kleiner Tip: ein DOM in eine externe XML-Repräsentation überführen, heisst in XML-Kreisen "serialisieren".
Moment, 0o. Ich will dich nur daran erinnern das du von ``ElementTree`` am Anfang geredet hast ->zipdrive hat geschrieben:Ok so kann man es vielleicht mit EmenetTrees machen, doch wie geht das wenn ich zb mit 4suite ein Dokument öffne[...]
Darauf hat BlackJack eine Antwort geliefert. Die darauf folgenden posts von dir hatte nicht "4suite" erwähnt und daher bin ich davon ausgegangen das sich das immer noch auf ``ElementTree`` bezieht. Ergo: Daher die Antwort das du das mit ``write`` machen kannst.Ok vielleicht könnt ihr ja meine Problem, die mir so aufgefallen sind lösen.
Mit ElementTree kann man ansich recht fix XML - Dokumente erstellen, dank _namespace_map kann man ja uri's mit den entsprechenden Prefixen ausstatten. Hier stehen dann auch alle NS - Attribute im Tree.
Wie kann man die Ausgabe bei ElementTree formatieren, ich möchte Einrückungen haben.
Dann speichere ich diesen Tree mit write.
Wie kann ich jetzt diese XML wieder auslesen, es sollen mir mit dem Dokument der DOM zur Verfügung stehen und irgendwie muss ich den veränderten Baum dann wieder speichern können! Wie macht man das am besten?
Grüße
lg