Frage

Ich habe einige Codes, die Ironpython Verwendung von XmlTextWriter macht, die mir Code wie

schreiben erlaubt
self.writer = System.Xml.XmlTextWriter(filename, None)
self.writer.Formatting = Formatting.Indented
self.writer.WriteStartElement(name)
self.writer.WriteString(str(text))
self.writer.WriteEndElement()

...

self.writer.Close()

Ich möchte meinen Code portable über Python-Implementierungen (CPython, Ironpython und Jython) machen. Gibt es einen Streaming-Python XML-Writer ich für diesen, ohne dass verwenden kann, um entweder print-Anweisungen, oder einen ganzen DOM-Baum zu konstruieren, bevor es zu schreiben, um Datei?

War es hilfreich?

Lösung

Ich schrieb ein Modul loxun namens genau das zu tun: http://pypi.python.org / pypi / loxun / . Es läuft mit CPython 2,5 und Jython 2.5, aber ich habe nie versucht, es mit Ironpython.

Beispiel Nutzung:

with open("...", "wb") as out:
  xml = XmlWriter(out)
  xml.addNamespace("xhtml", "http://www.w3.org/1999/xhtml")
  xml.startTag("xhtml:html")
  xml.startTag("xhtml:body")
  xml.text("Hello world!")
  xml.tag("xhtml:img", {"src": "smile.png", "alt": ":-)"})
  xml.endTag()
  xml.endTag()
  xml.close()

Und das Ergebnis:

<?xml version="1.0" encoding="utf-8"?>
<xhtml:html xlmns:xhtml="http://www.w3.org/1999/xhtml">
  <xhtml:body>
    Hello world!
    <xhtml:img alt=":-)" src="smile.png" />
  </xhtml:body>
</xhtml:html>

Neben anderen Merkmalen erkennt es missalligned Tags, während Sie schreiben, verwendet ein Streaming-API mit einem geringen Speicherbedarf, unterstützt Unicode und ermöglicht es ziemlich Druck zu deaktivieren.

Andere Tipps

Ich habe noch nie die .NET-Implementierung verwendet, Sie sprechen, aber es klingt wie die nächste wirst du bekommen, ist Python SAX-Parser (genauer gesagt, die XMLGenerator Klasse - einiger Beispielcode hier ).

schrieb ich ein Tool XML Generation von Python ( Code und Tutorial )

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top