符合规范
积极发展和社区参与
速度。这实际上是围绕C实现的python包装器。
无处不在。libxml2库是普遍存在的,因此经过了充分测试。
缺点包括:符合规范。这很严格。在其他库中,默认命名空间处理等内容更容易。
使用本机代码。这可能会很麻烦,具体取决于您的应用程序的分发/部署方式。RPM可以缓解一些痛苦。
手动资源处理。请注意以下示例中对freeDoc()和xpathFreeContext()的调用。这不是非常Pythonic。
如果您正在进行简单的路径选择,请坚持使用ElementTree(包含在Python 2.5中)。如果您需要完全符合规范或原始速度并且可以处理本机代码的分发,请使用libxml2。
libxml2 XPath的示例使用import libxml2
doc = libxml2.parseFile("tst.xml")ctxt = doc.xpathNewContext()res = ctxt.xpathEval("//*")if len(res) != 2:
print "xpath query: wrong node set size"
sys.exit(1)if res[0].name != "doc" or res[1].name != "foo":
print "xpath query: wrong node set value"
sys.exit(1)doc.freeDoc()ctxt.xpathFreeContext()
ElementTree XPath使用示例from elementtree.ElementTree import ElementTreemydoc = ElementTree(file='tst.xml')for e in mydoc.findall('/foo/bar'):
print e.get('title').text