从命名空间中提取 XML 元素的正确方法

问题描述 投票:0回答:1

在 Python 脚本中,我调用 SOAP 服务,该服务返回 XML 回复,其中元素具有命名空间前缀,比方说

<ns0:foo xmlns:ns0="SOME-URI">
  <ns0:bar>abc</ns0:bar>
</ns0:foo>

我可以通过方法调用提取ns0:bar的内容

doc.getElementsByTagName('ns0:bar')

但是,可以说,名称 ns0 只是一个局部变量(模式中未提及),也可能被命名为 flubberyou_should_not_care。在不依赖特定名称的情况下提取命名空间元素的内容的正确方法是什么?就我而言,SOAP 服务中的前缀确实发生了更改,导致解析失败。

python xml xml-parsing
1个回答
0
投票

如果按元素名称搜索,则需要命名空间支持

doc.getElementsByTagNameNS('SOME-URI','bar')

如果使用具有命名空间支持的包,例如

lxml

tree.xpath('//{SOME-URI}bar)'

或按当地名称

   tree.xpath('//*[local-name()="bar"]'
© www.soinside.com 2019 - 2024. All rights reserved.