Voluntas さんからのお薦め。 むちゃくちゃ速いらしい lxml を使ってみました。 libxml2, libxslt の Mac OSX 用 dmg も発見。 dmg をマウントして /Library/Frameworks に放り込むだけ。
$ svn co http://codespeak.net/svn/lxml/trunk lxml
$ cd lxml
$ sudo python setup.py install
Building lxml version 1.3.beta-43887
...
trunk版 (1.3 bata) じゃないと builder は使えません。
>>> from lxml import etree
>>> from lxml.builder import E
>>> etree.tostring(E("url"))
'<url/>'
>>> etree.tostring(E("url", "michilu.com"))
'<url>michilu.com</url>'
>>> etree.tostring(E("url",("michilu.com")))
'<url>michilu.com</url>'
>>> etree.tostring(E("url", href="michilu.com"))
'<url href="michilu.com"/>'
>>> etree.tostring(E.url(href="michilu.com"))
'<url href="michilu.com"/>'
>>> page = (
... E.html(
... E.head(
... E.title(u'MiCHiLU.com', {'id': 'title'})
... ),
... E.body(
... E.h1(u'[Django]: Django\u548c\u8a33\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 sync to r5387'),
... E.p(
... E.a(u'Enjoy!', href=u'http://michilu.com/'), u'Ni!'),
... )
... )
... )
>>> print etree.tostring(page, 'utf-8', pretty_print=True)
<html>
<head>
<title id="title">MiCHiLU.com</title>
</head>
<body>
<h1>[Django]: Django和訳ドキュメント sync to r5387</h1>
<p><a href="http://michilu.com/">Enjoy!</a>Ni!</p>
</body>
</html>
