Problème pour "parser" un fichier xml
Bonjour,
Je galère avec xml.etree.ElementTree pour récupérer les données dont j'ai besoin.
Voici le code que je teste
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #!/usr/bin/python3
# -*-coding:utf-8 -*
import xml.etree.ElementTree as ET
tree = ET.parse("fichier.xml")
namespace = {"gpx": "http://www.topografix.com/GPX/1/1"}
for elem in tree.findall('gpx:trkpt', namespace):
altitude = elem.find('ele')
heure = elem.find('time')
lat = elem.get('lat')
lon = elem.get('lon')
#print(lat, lon)
print(lat, lon, heure, altitude) |
et le fichier que j'essaie de "parser"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <?xml version="1.0" encoding="UTF-8"?>
<gpx
version="1.1"
creator="Runkeeper - http://www.runkeeper.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.topografix.com/GPX/1/1"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"
xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1">
<name><![CDATA[Running 28/8/18 4:07 pm]]></name>
<time>2018-08-28T16:07:08Z</time>
<trkpt lat="48.801130000" lon="2.432096000"><ele>40.0</ele><time>2018-08-28T16:07:08Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>93</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.801182000" lon="2.432334000"><ele>40.0</ele><time>2018-08-28T16:07:18Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>101</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.801259000" lon="2.432525000"><ele>40.0</ele><time>2018-08-28T16:07:28Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>111</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.801390000" lon="2.432719000"><ele>40.9</ele><time>2018-08-28T16:07:38Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>124</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.801501000" lon="2.433018000"><ele>41.7</ele><time>2018-08-28T16:07:48Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>129</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.801564000" lon="2.433322000"><ele>42.8</ele><time>2018-08-28T16:07:58Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>130</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.801625000" lon="2.433611000"><ele>43.5</ele><time>2018-08-28T16:08:08Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>134</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.801701000" lon="2.433925000"><ele>44.0</ele><time>2018-08-28T16:08:18Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>135</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.801876000" lon="2.434104000"><ele>45.4</ele><time>2018-08-28T16:08:28Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>135</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.802111000" lon="2.434184000"><ele>45.4</ele><time>2018-08-28T16:08:38Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>136</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.802352000" lon="2.434208000"><ele>44.1</ele><time>2018-08-28T16:08:48Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>138</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.802568000" lon="2.434170000"><ele>42.5</ele><time>2018-08-28T16:08:58Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>140</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.802742000" lon="2.434340000"><ele>41.4</ele><time>2018-08-28T16:09:08Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>139</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.802849000" lon="2.434383000"><ele>41.0</ele><time>2018-08-28T16:09:18Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>139</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.802973000" lon="2.434583000"><ele>40.2</ele><time>2018-08-28T16:09:28Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>138</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.803103000" lon="2.434905000"><ele>39.6</ele><time>2018-08-28T16:09:38Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>136</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.803234000" lon="2.435194000"><ele>38.6</ele><time>2018-08-28T16:09:48Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>136</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.803377000" lon="2.435457000"><ele>38.5</ele><time>2018-08-28T16:09:58Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>138</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.803513000" lon="2.435729000"><ele>38.3</ele><time>2018-08-28T16:10:08Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>138</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.803662000" lon="2.435998000"><ele>38.0</ele><time>2018-08-28T16:10:18Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>142</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
<trkpt lat="48.803792000" lon="2.436322000"><ele>38.8</ele><time>2018-08-28T16:10:28Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>142</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt>
</gpx> |
Ce sont les lignes altitude = elem.find('ele') et heure = elem.find('time') qui me renvoient du "None" et si je code altitude = elem.find('ele').text j'obtiens un plantage.
Je ne sais pas si c'est encore un problème de namespace ...
Bref si quelqu'un a une idée pour que je puisse récupérer les valeurs en question
Merci