pythonic xml数据绑定包
NodeTree的Python项目详细描述
nodetree为在python中使用xml提供了一个干净、现代的api。
版本0.3增加了对XML文档解析的支持:
>>> importnodetree>>> d=nodetree.Document('<article><p>Pre <b>Bold</b> Post</p></article>')>>> d<?xml version="1.0"?> <article> <p>Pre <b>Bold</b> Post</p> </article> >>> str(d.root)'<?xml version="1.0"?>\n<article><p>Pre <b>Bold</b> Post</p></article>\n' >>> d.root[0]<p>Pre <b>Bold</b> Post</p> >>> d.root[0].pop()' Post' >>> d.root[0][0]='Plain Text vs '>>> d.root<article> <p>Plain Text vs <b>Bold</b></p> </article>
XML流(如xmpp)现在也支持渐进式解析:
>>> importnodetree>>> s=nodetree.Stream('<stream:stream xmlns="jabber:client" '+ 'xmlns:stream="http://etherx.jabber.org/streams">') >>> s.send('<message><body>Hello, World!</body></message>')>>> s.root.pop(0)<message> <body>Hello, World!</body> </message> >>> s.send('<message><body>This works')>>> s.root.pop(0)Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: incomplete branch>>> s.send(' well</body></message>')>>> s.root.pop(0)<message> <body>This works well</body> </message>
此版本还添加了对ProcessingInstruction节点和修复程序的支持 关于XML分支拼接和合并的几个错误。
警告
nodetree仍处于早期开发阶段;此版本缺少几个基本的 特性和包含已知的错误,这些错误可能使它不适合许多 应用。值得注意的是,当前无法从 python,不支持cdata节点、xpath或xslt。