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
<?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