Skip to main content
 首页 » 编程设计

python xml提取for循环

2025年05月04日15jpfss

我有一些脚本,我认为已经差不多了。我已经找到了一种粗略的编写方式,但我不知道如何让它作为 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)