我有一些脚本,我认为已经差不多了。我已经找到了一种粗略的编写方式,但我不知道如何让它作为 for 循环运行。
我正在从使用以下格式的 xml 文件中提取数据:
<Trackpoint>
<Time>2012-01-17T11:44:35Z</Time>
<Position>
<LatitudeDegrees>51.920211518183351</LatitudeDegrees>
<LongitudeDegrees>26.706042898818851</LongitudeDegrees>
</Position>
<AltitudeMeters>-43.6026611328125</AltitudeMeters>
</Trackpoint>
<Trackpoint>
<Time>2012-01-17T11:45:21Z</Time>
<Position>
<LatitudeDegrees>51.920243117958307</LatitudeDegrees>
<LongitudeDegrees>26.706140967085958</LongitudeDegrees>
</Position>
<AltitudeMeters>-43.6026611328125</AltitudeMeters>
</Trackpoint>
我可以使用以下内容来获取 LatitudeDegrees:
from xml.dom.minidom import parse
doc = parse('/Users/name/Documents/GPS/gps.tcx')
lat = doc.getElementsByTagName("LatitudeDegrees")
time = doc.getElementsByTagName("Time")
trackpoint = doc.getElementsByTagName("Trackpoint")
for x in lat:
print(x.firstChild.data)
但我想按顺序获取纬度、经度和时间。
我猜我需要使用
for x in trackpoint
但我能弄清楚如何做到这一点的唯一方法如下。
count = 0
n = len(trackpoint)
while count < n:
print(time[count].firstChild.data)
print(lat[count].firstChild.data)
print(lon[count].firstChild.data)
count += 1
有人有什么想法吗?我想我只是错过了一些非常简单的东西!
请您参考如下方法:
首先找到所有的 Trackpoint 元素并循环遍历它们。然后在循环内找到每个 Trackpoint 元素所需的子元素:
from xml.dom.minidom import parse
doc = parse('in.tcx')
trackpoints = doc.getElementsByTagName("Trackpoint")
result = []
elements = ('Time', 'LatitudeDegrees', 'LongitudeDegrees')
for tp in trackpoints:
obj = {}
for el in elements:
obj[el] = tp.getElementsByTagName(el)[0].firstChild.data
result.append(obj)
print(result)
