XML-Schreibwerkzeuge für Python
Ich versuche momentan ElementTree und es sieht gut aus, es entgeht HTML-entities und so weiter und so Fort. Bin ich etwas fehlt wirklich wunderbar, ich habe noch nicht gehört?
Dies ist ähnlich zu dem, was ich tatsächlich Tue:
import xml.etree.ElementTree as ET
root = ET.Element('html')
head = ET.SubElement(root,'head')
script = ET.SubElement(head,'script')
script.set('type','text/javascript')
script.text = "var a = 'I love á letters'"
body = ET.SubElement(root,'body')
h1 = ET.SubElement(body,'h1')
h1.text = "And I like the fact that 3 > 1"
tree = ET.ElementTree(root)
tree.write('foo.xhtml')
# more foo.xhtml
<html><head><script type="text/javascript">var a = 'I love &aacute;
letters'</script></head><body><h1>And I like the fact that 3 > 1</h1>
</body></html>
Kommentar zu dem Problem
Einige der web-template-Sprachen (HTML / XML) geladen werden können als Module ohne dazugehörige web-framework. Wenn Sie brauchen, um Phantasie, würde ich vorschlagen, auf der Suche so. Ich hatte besonders viel Glück mit genshi.
InformationsquelleAutor der Frage Vinko Vrsalovic | 2008-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gehe davon aus, dass Sie tatsächlich die Schaffung einer XML-DOM-Baumes, weil Sie wollen, um zu überprüfen, dass das, was in dieser Datei gültig ist XML, denn sonst würden Sie schreiben einfach eine statische Zeichenfolge in eine Datei. Bei der Validierung Ihrer Ausgabe ist in der Tat Ihr Ziel, dann würde ich vorschlagen, dass
Diese Weise können Sie schreiben Sie einfach die XML, die Sie ausgeben möchten, überprüfen Sie, dass es richtig ist (da parseString wirft eine Ausnahme, wenn es ungültig ist) und den code viel schöner Aussehen.
Vermutlich sind Sie nicht einfach nur schreiben das gleiche statische XML-jedes mal, und wollen einige, substitution. In diesem Fall würde ich Zeilen wie
und verwenden Sie dann den % - operator zu tun, die substitution, wie
InformationsquelleAutor der Antwort Eli Courtwright
Andere Möglichkeit ist, über die E Werk - generator von lxml (erhältlich in Elementtree auch)
InformationsquelleAutor der Antwort Peter Hoffmann
Gibt es immer SimpleXMLWriter, Teil der ElementTree-toolkit. Die Schnittstelle ist tot einfach.
Hier ein Beispiel:
InformationsquelleAutor der Antwort oasisbob
https://github.com/galvez/xmlwitch:
InformationsquelleAutor der Antwort Mikhail Korobov
nicht, Sie tatsächlich wollen, dass so etwas wie:
Ich denke, dass ich so etwas sah, irgendwo. Dies wäre wunderbar.
EDIT: Tatsächlich, ich ging und schrieb eine Bibliothek heute zu tun nur, dass: magictree
Können Sie es verwenden, wie diese:
Magie in
magictree
liegt darin, wie der Import funktioniert: DieElement
Fabriken erstellt werden, wenn nötig. Eine Blick auf die Quelle, es ist basierend auf einer Antwort zu einem anderen StackOverflow-Frage.InformationsquelleAutor der Antwort Daren Thomas
Landete ich mit saxutils.escape(str) zu erzeugen gültigen XML-strings und dann überprüfen Sie es mit Eli 's Ansatz, um sicher zu sein ich didn' T verpassen jedem tag
InformationsquelleAutor der Antwort Vinko Vrsalovic
Für jeden Auftritt das jetzt, dass es tatsächlich einen Weg gibt dies zu tun, versteckt in der Python-standard-Bibliothek in xml.sax.utils.XMLGenerator. Hier ist ein Beispiel in Aktion:
InformationsquelleAutor der Antwort Nick Johnson
Versuchen http://uche.ogbuji.net/tech/4suite/amara. Es ist ziemlich komplett und hat eine straight-forward-set von access-tools. Normale Unicode-Unterstützung usw..
InformationsquelleAutor der Antwort DaveP