相关疑难解决方法(0)

Python lxml iterfind w/namespace但是prefix = None

我想对iterfind()具有命名空间但没有前缀的元素执行.我想打个电话

iterfind([tagname]) 要么 iterfind([tagname], [namespace dict])

我不关心每次都输入如下标签:

"{%s}tagname" % tree.nsmap[None]

细节

我正在使用Google API的xml响应.根节点定义了几个名称空间,包括没有前缀的名称空间:xmlns="http://www.w3.org/2005/Atom"

看起来当我尝试搜索我的etree时,一切都像我期望的那样具有前缀的元素.例如:

>>> for x in root.iterfind('dxp:segment'): print x
...
<Element {http://schemas.google.com/analytics/2009}segment at 0x1211b98>
<Element {http://schemas.google.com/analytics/2009}segment at 0x1211d78>
<Element {http://schemas.google.com/analytics/2009}segment at 0x1211a08>
>>>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试搜索没有前缀的内容时,搜索不会自动添加名称空间root.nsmap[None].例如:

>>> for x in root.iterfind('entry'): print x
...
>>>
Run Code Online (Sandbox Code Playgroud)

即使我尝试将命名空间映射作为可选参数抛出iterfind,它也不会附加命名空间.

python lxml xml-namespaces

6
推荐指数
1
解决办法
3963
查看次数

标签 统计

lxml ×1

python ×1

xml-namespaces ×1