默认情况下,当您调用 ElementTree.parse(someXMLfile) 时,Python ElementTree 库会在每个解析的节点前面加上 Clark 表示法中的命名空间 URI:
{http://example.org/namespace/spec}mynode
这使得在代码后面通过名称访问特定节点变得非常痛苦。
我已经阅读了有关 ElementTree 和命名空间的文档,看起来该iterparse()
函数应该允许我更改解析器为命名空间添加前缀的方式,但对于我的生活,我实际上无法让它更改前缀。似乎这可能在 ns-start 事件触发之前在后台发生,如下例所示:
for event, elem in iterparse(source):
if event == "start-ns":
namespaces.append(elem)
elif event == "end-ns":
namespaces.pop()
else:
...
如何让它改变前缀行为以及函数结束时返回的正确内容是什么?