哪些库支持XPath?是否有全面的实施?图书馆是如何使用的?它的网站在哪里
libxml2有许多优点:
- 符合规范
- 积极发展和社区参与
- 速度。这实际上是一个围绕C实现的python包装器
- 无处不在。libxml2库非常普及,因此经过了很好的测试
不利因素包括:
- 符合规范,非常严格。在其他库中,默认名称空间处理等操作更容易
- 使用本机代码。这可能是一个难题,具体取决于应用程序的分布/部署方式。RPM可以缓解一些疼痛
- 手动资源处理。请注意下面的示例中对freeDoc()和xpathFreeContext()的调用。这不是很像蟒蛇
如果要进行简单的路径选择,请坚持使用ElementTree(包含在Python 2.5中)。如果您需要完全符合规范或原始速度,并且能够处理本机代码的分发,请使用libxml2
libxml2xpath使用示例
导入libxml2
doc=libxml2.parseFile(“tst.xml”)
ctxt=doc.xpathNewContext()
res=ctxt.xpathEval(“//*”)
如果len(res)!=2:
打印“xpath查询:错误的节点集大小”
系统出口(1)
if res[0]。名称!=“doc”或res[1]。名称!=“foo”:
打印“xpath查询:错误的节点集值”
系统出口(1)
freeDoc()博士
ctxt.xpathFreeContext()
ElementTree XPath使用示例
来自elementtree.elementtree导入elementtree
mydoc=ElementTree(file='tst.xml')
对于mydoc.findall('/foo/bar')中的e:
打印e.get('title')。文本