3

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 ライターはありますか?

4

3 に答える 3

3

それを行うために、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 をサポートし、きれいな印刷を無効にすることができます。

于 2010-05-21T18:56:15.270 に答える
2

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

于 2009-06-20T20:14:54.003 に答える
2

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

于 2009-06-21T03:54:44.837 に答える