如何阅读ElementTree中特定子节点的文本?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何阅读ElementTree中特定子节点的文本?相关的知识,希望对你有一定的参考价值。
我正在使用ElementTree处理XML文件,每个文件有大约5000个这些“资产”节点
<asset id="83">
<name/>
<tag>0</tag>
<vin>3AKJGLBG6GSGZ6917</vin>
<fleet>131283</fleet>
<type id="0">Standard</type>
<subtype/>
<exsid/>
<mileage>0</mileage>
<location>B106</location>
<mileoffset>0</mileoffset>
<enginehouroffset>0</enginehouroffset>
<radioaddress/>
<mfg/>
<inservice>04 Apr 2017</inservice>
<inspdate/>
<status>1</status>
<opstatus timestamp="1491335031">unknown</opstatus>
<gps>567T646576</gps>
<homeloi/>
</asset>
我需要 资产节点上id属性的值 vin节点的文本 gps节点的文本
如何直接读取'vin'和'gps'子节点的文本而不必遍历所有子节点?
for asset_xml in root.findall("./assetlist/asset"):
print(asset_xml.attrib['id'])
for asset_xml_children in asset_xml:
if (asset_xml_children.tag == 'vin'):
print(str(asset_xml_children.text))
if (asset_xml_children.tag == 'gps'):
print(str(asset_xml_children.text))
答案
您可以相对于每个asset
元素执行XPath,以直接获取vin
和gps
而无需循环:
for asset_xml in root.findall("./assetlist/asset"):
print(asset_xml.attrib['id'])
vin = asset_xml.find("vin")
print(str(vin.text))
gps = asset_xml.find("gps")
print(str(gps.text))
以上是关于如何阅读ElementTree中特定子节点的文本?的主要内容,如果未能解决你的问题,请参考以下文章
使用 xml.etree.ElementTree 获取子节点的所有实例
python解析xml文件之xml.etree.cElementTree和xml.etree.ElementTree区别