Guten Morgen Pythonnutzer,
nach langer Zeit fange ich wieder mit Python an, habe jedoch das meiste vergessen. Mein Zeil ist es aus einer Datei wichtige Daten auszulesen, die dann angezeigt werden soll. (Habe leider keine Ahnung wie ich damit anfangen soll).
Beispiel:
[codebox=xml file=Unbenannt.xml]<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase
xsi:schemaLocation="http://www.garmin.com/xmlschemas/Traini ... atabase/v2 http://www.garmin.com/xmlschemas/Traini ... basev2.xsd"
xmlns:ns5="http://www.garmin.com/xmlschemas/ActivityGoals/v1"
xmlns:ns3="http://www.garmin.com/xmlschemas/ActivityExtension/v2"
xmlns:ns2="http://www.garmin.com/xmlschemas/UserProfile/v2"
xmlns="http://www.garmin.com/xmlschemas/Traini ... atabase/v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns4="http://www.garmin.com/xmlschemas/ProfileExtension/v1">
<Activities>
<Activity Sport="Running">
<Id>2018-01-22T10:04:37.000Z</Id>
<Lap StartTime="2018-01-22T10:04:37.000Z">
<TotalTimeSeconds>367.0</TotalTimeSeconds>
<DistanceMeters>311.01</DistanceMeters>
<MaximumSpeed>2.1649999618530273</MaximumSpeed>
<Calories>19</Calories>
<Intensity>Active</Intensity>
<TriggerMethod>Manual</TriggerMethod>
<Track>
<Trackpoint>
<Time>2018-01-22T10:04:37.000Z</Time>
<DistanceMeters>0.0</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>0.0</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:05:16.000Z</Time>
<DistanceMeters>20.329999923706055</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5399999618530273</ns3:Speed>
<ns3:RunCadence>59</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:05:29.000Z</Time>
<DistanceMeters>40.4900016784668</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5399999618530273</ns3:Speed>
<ns3:RunCadence>47</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:05:43.000Z</Time>
<DistanceMeters>61.130001068115234</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.399999976158142</ns3:Speed>
<ns3:RunCadence>45</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:06:04.000Z</Time>
<DistanceMeters>81.83000183105469</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5859999656677246</ns3:Speed>
<ns3:RunCadence>49</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:06:18.000Z</Time>
<DistanceMeters>103.26000213623047</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.465000033378601</ns3:Speed>
<ns3:RunCadence>49</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:06:33.000Z</Time>
<DistanceMeters>124.05999755859375</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.3339999914169312</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:07:01.000Z</Time>
<DistanceMeters>144.6300048828125</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4459999799728394</ns3:Speed>
<ns3:RunCadence>59</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:07:27.000Z</Time>
<DistanceMeters>164.8800048828125</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5490000247955322</ns3:Speed>
<ns3:RunCadence>59</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:07:55.000Z</Time>
<DistanceMeters>185.1300048828125</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.437000036239624</ns3:Speed>
<ns3:RunCadence>53</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:09:00.000Z</Time>
<DistanceMeters>205.32000732421875</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5859999656677246</ns3:Speed>
<ns3:RunCadence>61</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:09:13.000Z</Time>
<DistanceMeters>225.5800018310547</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4839999675750732</ns3:Speed>
<ns3:RunCadence>51</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:09:36.000Z</Time>
<DistanceMeters>245.75999450683594</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4739999771118164</ns3:Speed>
<ns3:RunCadence>59</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:01.000Z</Time>
<DistanceMeters>266.3900146484375</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5399999618530273</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:20.000Z</Time>
<DistanceMeters>286.7200012207031</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4739999771118164</ns3:Speed>
<ns3:RunCadence>57</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:38.000Z</Time>
<DistanceMeters>308.0799865722656</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4739999771118164</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:44.000Z</Time>
<DistanceMeters>311.010009765625</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>0.0</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:47.000Z</Time>
<DistanceMeters>311.010009765625</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>0.0</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
</Track>
<Extensions>
<ns3:LX>
<ns3:AvgSpeed>0.7799999713897705</ns3:AvgSpeed>
<ns3:AvgRunCadence>28</ns3:AvgRunCadence>
<ns3:MaxRunCadence>114</ns3:MaxRunCadence>
</ns3:LX>
</Extensions>
</Lap>
<Creator xsi:type="Device_t">
<Name>Garmin Forerunner 220</Name>
<UnitId>3880419542</UnitId>
<ProductID>1632</ProductID>
<Version>
<VersionMajor>3</VersionMajor>
<VersionMinor>10</VersionMinor>
<BuildMajor>0</BuildMajor>
<BuildMinor>0</BuildMinor>
</Version>
</Creator>
</Activity>
</Activities>
<Author xsi:type="Application_t">
<Name>Garmin Connect API</Name>
<Build>
<Version>
<VersionMajor>18</VersionMajor>
<VersionMinor>1</VersionMinor>
<BuildMajor>0</BuildMajor>
<BuildMinor>0</BuildMinor>
</Version>
</Build>
<LangID>en</LangID>
<PartNumber>006-D2449-00</PartNumber>
</Author>
</TrainingCenterDatabase>
[/code]
Und ich will ein Programm erstellen welches davon den Speed oder den Distance herausfischt, also abliest und dann am Ende so etwas zeigt:
Distance: xxxx
Speed: xxx
Date: xxxx
Information durch Python ablesen
- noisefloor
- User
- Beiträge: 3829
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
das ist eine XML-Datei, die du mit einem passenden XML-Parser parsen und die Daten verarbeiten, extrahieren etc. Python hat das Element Tree Modul an Bord, die allgemeine Empfehlung aber oft, das externe Modul lxml zu nehmen, weil das Modul komfortabler etc. ist.
Gruß, noisefloor
das ist eine XML-Datei, die du mit einem passenden XML-Parser parsen und die Daten verarbeiten, extrahieren etc. Python hat das Element Tree Modul an Bord, die allgemeine Empfehlung aber oft, das externe Modul lxml zu nehmen, weil das Modul komfortabler etc. ist.
Gruß, noisefloor
Im meiner Wahrnehmung nach zunehmend populäreren Linked Data Bereich wird das sehr ausgiebig praktiziert und propagiert. Bei RDF ist es ja quasi Design Prinzip, existierende Namespaces zu kombinieren. Im Vergleich zu einem durchschnittlichen RDF-XML Dokument, sieht das gezeigte eigentlich noch Recht moderat aus. Möglicherweise ist das mit ein Grund, warum Semantic Web Ideen oft als sehr akademisch angesehen werden.__deets__ hat geschrieben:wer denkt sich sowas aus, und glaubt dann auch noch, das waere *gut*?!!?
Ich weiss, wozu das gedacht ist. Ich halte das nur fuer voellig ueberkandidelt. Das ist ein Dokument von GARMIN. Wieviele Gruppen innerhalb von Garmin arbeiten denn daran, eigene Dokumentformate zu entwickeln? Die dann auch noch so feingranular ineinander verzahnt sind? Und die GARMIN firmware in mit dem embedded Core M3 oder was auch laedt dann unabhaengige Libraries, die bei Gelegenheit Tags ausspucken? Das ist doch Bullshit. Da wuerde ein simples Format ala JSON (wegen mir in XML) mit einem Versionsheader reichen, und das war's.Sirius3 hat geschrieben:@__deets__: das ist wie mit Namensräumen in Programmiersprachen auch; es erlaubt, dass verschiedene Gruppen unabhängig voneinander ein Format entwickeln können, ohne dass sich Tags in die Quere kommen.
Namspaces haben ihre Berechtigung bei zB HTML mit eingebetteten SVG oder MathML Dokumenten. Oder um bei deiner Analogie zu bleiben: zwei Bibliotheken, die man nebeneinander benutzt.
Sobald zwei Bibliotheken sich kreuzweise aufrufen und voneinander abhaengen, beluegt man sich bezueglich einer konzeptionellen Getrenntheit selbst...
Nachtrag: wenn ich das richtig sehe, sind 3 der namespaces gar nicht verwandt. Ein Hoch auf die Erweiterbarkeit...