为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Python中使用XPath?

如何在Python中使用XPath?

慕的地10843 2021-03-21 14:15:55
有哪些支持XPath的库?是否有完整的实现?图书馆如何使用?它的网站在哪里?
查看完整描述

4 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

libxml2具有许多优点:

  1. 符合规范

  2. 积极发展和社区参与

  3. 速度。这实际上是围绕C实现的python包装器。

  4. 无处不在。libxml2库无处不在,因此已经过了很好的测试。

缺点包括:

  1. 符合规范。严格 在其他库中,诸如默认名称空间处理之类的事情会更容易。

  2. 使用本机代码。这可能会很麻烦,具体取决于您的应用程序的分发/部署方式。可以使用RPM来减轻这种痛苦。

  3. 手动资源处理。请注意下面的示例中对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 ElementTree

mydoc = ElementTree(file='tst.xml')

for e in mydoc.findall('/foo/bar'):

    print e.get('title').text


查看完整回答
反对 回复 2021-03-22
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

LXML包支持XPath。尽管我在self ::轴上遇到了一些麻烦,但它似乎工作得很好。还有Amara,但我个人还没有使用过。


查看完整回答
反对 回复 2021-03-22
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

使用LXML。LXML充分利用了libxml2和libxslt的功能,但是将它们包装在比这些库中固有的Python绑定更多的“ Pythonic”绑定中。这样,它将获得完整的XPath 1.0实现。本机ElemenTree支持XPath的有限子集,尽管它可能足以满足您的需求。


查看完整回答
反对 回复 2021-03-22
  • 4 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号