XML-Schreibwerkzeuge für Python

Ich versuche gerade ElementTree und es sieht gut aus, es entgeht HTML-Entitäten und so weiter und so fort. Vermisse ich etwas wirklich Wunderbares, von dem ich noch nichts gehört habe?

Das ist ähnlich dem, was ich tatsächlich mache:

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 &amp;aacute;
letters'</script></head><body><h1>And I like the fact that 3 &gt; 1</h1>
</body></html>
Ich gehe davon aus, dass Sie tatsächlich eine XML-DOM-Struktur erstellen, weil Sie überprüfen möchten, dass das, was in dieser Datei enthalten ist, gültiges XML ist, da Sie ansonsten nur eine statische Zeichenfolge in eine Datei schreiben würden. Wenn die Überprüfung Ihrer Ausgabe tatsächlich Ihr Ziel ist, würde ich vorschlagen

from xml.dom.minidom import parseString

doc = parseString("""<html>
    <head>
        <script type="text/javascript">
            var a = 'I love &amp;aacute; letters'
        </script>
    </head>
    <body>
        <h1>And I like the fact that 3 &gt; 1</h1>
    </body>
    </html>""")

with open("foo.xhtml", "w") as f:
    f.write( doc.toxml() )

Auf diese Weise können Sie einfach das XML schreiben, das Sie ausgeben möchten, und es auf seine Richtigkeit überprüfen (da parseString eine Ausnahmebedingung auslöst, wenn es ungültig ist) und Ihr Code viel schöner aussieht.

Vermutlich schreiben Sie nicht jedes Mal dasselbe statische XML und möchten eine Ersetzung. In diesem Fall hätte ich Zeilen wie

var a = '%(message)s'

und verwenden Sie dann den Operator%, um die Ersetzung durchzuführen, z

</html>""" % {"message": "I love &amp;aacute; letters"})
Ursprüngliche URL:https://stackoverflow.com/questions/56229/xml-writing-tools-for-python

Zitieren Sie bitte die URL dieses Artikels: XML-Schreibwerkzeuge für Python