繁体   English   中英

xml.etree.ElementTree 未找到 XML 中的所有元素

[英]xml.etree.ElementTree not finding all Elements in XML

我有以下 XML 文件,我正在尝试使用 xml.etree 对其进行迭代:

<safetypadapiresponse><url></url><refcode /><status>SUCCESS</status><message><pcrs>
  <pcr>
    <eCase01m>1234</eCase01m>
    <eProcedures03>12 Lead ECG Obtained</eProcedures03>
    <eMedications03>Oxygen</eMedications03>
  </pcr>
</pcrs></message></safetypadapiresponse>

我无法在“消息”之后找到任何具有以下内容的子元素:

import xml.etree.ElementTree as ET

tree = ET.parse(xmlFile)
root = tree.getroot()

for member in root.findall('pcr'):
  print(member)

运行以下命令时会列出以下子元素:

for member in root:
  print(member)
  • 元素“网址”
  • 元素“参考代码”
  • 元素“状态”
  • 元素“消息”

我正在尝试检索 pcr 元素下的所有信息(即 eCase01m、eProcedures03、eMedications03)。

您可以通过两种方式使用findall() 文档的两个不同部分中提到了这一点,但无济于事:

Element.findall() 仅查找带有标记的元素,这些元素是当前元素的直接子元素。

...

按标签名称或路径查找所有匹配的子元素。 返回一个包含文档顺序中所有匹配元素的列表。

这意味着如果你寻找一个标签,你只是在寻找当前元素的直接子元素。

您可以使用 XPath 来查找您感兴趣的部分,这将通过查找匹配项的文档进行递归。 应执行以下任一操作:

root.findall('./message/pcrs/pcr')  # Find them relative to this node
root.findall('.//pcr')  # Find them anywhere below the current node

为了完整起见,让我补充一点,您也可以尝试使用 xpath:

for i in tree.xpath('*//pcr/*'):
print(i.tag)

输出:

eCase01m
eProcedures03
eMedications03

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM