質問

XmlTextWriterを使用するIronPythonコードがあり、次のようなコードを記述できます

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()

Python実装(CPython、IronPython、およびJython)でコードを移植可能にしたいと思います。 printステートメントを使用せずに、またはファイルに書き出す前にDOMツリー全体を構築する必要なく、これに使用できるストリーミングPython XMLライターはありますか?

役に立ちましたか?

解決

それを行うためにloxunというモジュールを作成しました: http://pypi.python.org / pypi / loxun / 。 CPython 2.5およびJython 2.5で動作しますが、IronPythonで試したことはありません。

使用例:

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()

そして結果:

<?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>

その他の機能の中でも、書き込み中にタグの誤認を検出し、メモリフットプリントの小さいストリーミングAPIを使用し、Unicodeをサポートし、きれいな印刷を無効にします。

他のヒント

あなたが話している.NET実装を使用したことはありませんが、最も近いのはPythonの SAXパーサー(具体的には、 XMLGeneratorクラス-サンプルコードこちら)。

PythonからのXML生成を容易にするツールを作成しました(コードおよびチュートリアル

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top