我正在使用 iterparse 解析一个 xml 文档。
from lxml import etree
import tempfile
content = """<root xmlns="blah.com">
<foo>
<attribute id="3" />
</foo>
<foo>
<structure>
<baz>
<x>g</x>
</baz>
</structure>
</foo>
</root>"""
src_file = tempfile.NamedTemporaryFile()
src_file.write(content)
src_file.flush()
context = etree.iterparse(
src_file.name,
events=("end", ),
tag="foo",
)
for event, element in context:
print event
print element
- 预期结果:我看到了一些
end
事件 - 实际结果:什么都没发生
我尝试了几件事:
- 如果我从 xml 中删除命名空间,它工作正常。
- 如果我使用带有前缀的命名空间,
xlmns:t="blah.com"
它也可以正常工作。 - 删除它
tag="foo"
也可以正常工作。
但是,我想同时使用基本标记和默认命名空间。这是 iterparse 的错误吗?我做错了什么吗?
编辑:编辑代码以使其可复制粘贴而不会出现识别错误。