XML 在特定父标签下解析

XML parsing under a specific parent tag

<?xml version="1.0" encoding="utf-8"?>
  <ReturnHeader>
    <Bob>
      <PhoneNum>2222</PhoneNum>
      <Address>
        <AddressLine1>111 St</AddressLine1>
        <Zip>999</Zip>
      </Address>
    </Bob>
    <John>
      <PhoneNum>4444</PhoneNum>
      <Address>
        <AddressLine1>222 Ln</AddressLine1>
        <Zip>777</Zip> 
      </Address>    
    </John>
  </ReturnHeader>

根据上面的 XML,我正在尝试获取 Bob 的邮政编码。我需要以下输出:

鲍勃 999

根据此处的回答,我使用了以下代码。但是我无法获取地址中的文本。感谢任何帮助。

import xml.etree.ElementTree as ET

NAME_TO_FIND = 'Bob'
root = ET.fromstring(xml)
for ele in root:
  if ele.tag == NAME_TO_FIND:
    print(ele.find("Zip").text)

您可以将 xpath 与 iterfind()

一起使用
name = 'Bob'
zip_code = next(root.iterfind(f'./{name}/Address/Zip'), None)
if zip_code is not None:
    print(zip_code.text) #999

name = 'John'
zip_code = next(root.iterfind(f'./{name}/Address/Zip'), None)
if zip_code is not None:
    print(zip_code.text) #777