【发布时间】:2018-10-27 11:42:46
【问题描述】:
我有一个包含如下元素的 XML 文件:
<wrapping_element>
<prefix:tag xmlns:prefix="url">value</prefix:tag>
</wrapping_element>
我想得到这个元素,所以我使用lxml如下:
wrapping_element.find('prefix:tag', wrapping_element.nsmap)
但我收到以下错误:SyntaxError: prefix 'prefix' not found in prefix map,因为在到达 XML 中的此元素之前未定义 prefix。
有没有办法获取元素?
【问题讨论】:
-
我认为问题在于 wrapping_element.nsmap 是空的。我什至在文档迷宫中都没有找到
find,但似乎也有一个方法xpath,也许你可以使用它。 -
@ArndtJonasson 问题是,
xpath需要namespaces参数,就像find一样。我的问题是我找不到没有元素的方法来检索命名空间,也找不到没有命名空间的元素。 -
wrapping_element.xpath('/*/*[local-name()="tag"]')怎么样? -
@ArndtJonasson 太棒了!我使用了相对路径:
wrapping_element.xpath('./*[local-name()="tag"]'),它运行良好。非常感谢!
标签: python xml xml-parsing lxml xml-namespaces