lxml中的通配符名称空间 [英] Wildcard namespaces in lxml

查看:141
本文介绍了lxml中的通配符名称空间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用xpath忽略xml名称空间进行查询?我正在使用python lxml库.我尝试了问题的解决方案,但似乎没有用

How to query using xpath ignoring the xml namespace? I am using python lxml library. I tried the solution from this question but doesn't seem to work.

In [151]: e.find("./*[local-name()='Buckets']")
  File "<string>", line unknown
SyntaxError: invalid predicate

推荐答案

使用e.xpath,而不是e.find :

Use e.xpath, not e.find:

import lxml.etree as ET

content = '''\
<Envelope xmlns="http://www.example.com/zzz/yyy">
  <Header>
    <Version>1</Version>
  </Header>
  <Buckets>
    some stuff
  </Buckets>
</Envelope>
'''
root = ET.fromstring(content)
print(root.xpath("./*[local-name()='Buckets']"))
# [<Element {http://www.example.com/zzz/yyy}Buckets at 0xb73a62ac>]

这篇关于lxml中的通配符名称空间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆