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

如何在Python中使用Xpath?

如何在Python中使用Xpath?

交互式爱情 2019-08-15 14:58:14
如何在Python中使用Xpath?什么是图书馆?有完整的实施吗?图书馆是如何使用的?它的网站在哪里?
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超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 ElementTreemydoc = ElementTree(file='tst.xml')for e in mydoc.findall('/foo/bar'):
    print e.get('title').text



查看完整回答
反对 回复 2019-08-15
?
慕森王

TA贡献1777条经验 获得超3个赞

LXML包支持XPath。它似乎工作得很好,虽然我在self :: axis上遇到了一些麻烦。还有Amara,但我没有亲自使用它。


查看完整回答
反对 回复 2019-08-15
?
慕容708150

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

听起来就像这里的lxml广告。;)ElementTree包含在std库中。在2.6以下,它的xpath非常弱,但在2.7中有很大改进

import xml.etree.ElementTree as ET
root = ET.parse(filename)result = ''for elem in root.findall('.//child/grandchild'):
    # How to make decisions based on attributes even in 2.6:
    if elem.attrib.get('name') == 'foo':
        result = elem.text        break


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 467 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信