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
et le fichier que j'essaie de "parser"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager