Python和lxml:从给定元素获取子子元素
我有这段XML代码:
<ProceduresDB>
<Airport ICAOcode="EHRD">
<Sid Name="ANDI1A" Runways="06">
<Sid_Waypoint ID="1">
<Latitude>0.000000</Latitude>
<Longitude>0.000000</Longitude>
</Sid_Waypoint>
<Sid_Waypoint ID="2">
<Latitude>51.973697</Latitude>
<Longitude>4.480970</Longitude>
</Sid_Waypoint>
<Sid Name="ARNE2A" Runways="06">
<Sid_Waypoint ID="1">
etc etc
我想知道怎么才能获取到每个航点的所有纬度和经度,特别是对于Sid
为Name='ANDI1A'
的情况?
我一直在尝试用lxml来实现这个,但大多数教程都讲的是有嵌套子元素的XML文档。
1 个回答
1
你可以使用 .//Sid[@Name="ANDI1A"]/Sid_Waypoint
这个 xpath
表达式:
import lxml.etree as ET
data = """<ProceduresDB>
<Airport ICAOcode="EHRD">
<Sid Name="ANDI1A" Runways="06">
<Sid_Waypoint ID="1">
<Latitude>0.000000</Latitude>
<Longitude>0.000000</Longitude>
</Sid_Waypoint>
<Sid_Waypoint ID="2">
<Latitude>51.973697</Latitude>
<Longitude>4.480970</Longitude>
</Sid_Waypoint>
</Sid>
</Airport>
</ProceduresDB>"""
tree = ET.fromstring(data)
for waypoint in tree.findall('.//Sid[@Name="ANDI1A"]/Sid_Waypoint'):
print "Waypoint %s" % waypoint.attrib["ID"]
for item in waypoint:
print item.tag, item.text
输出结果是:
Waypoint 1
Latitude 0.000000
Longitude 0.000000
Waypoint 2
Latitude 51.973697
Longitude 4.480970