Разбор XML-данных Garmin GPX с использованием SimpleXML

У меня есть этот файл GPX:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" .. >
<metadata>
<link href="http://www.garmin.com">
<text>Garmin International</text>
</link>
<time>2017-03-13T14:42:05Z</time>
</metadata>
<trk>
<name>2017-03-13 15:41:57</name>
<extensions>
<gpxx:TrackExtension>
<gpxx:DisplayColor>Cyan</gpxx:DisplayColor>
</gpxx:TrackExtension>
<gpxtrkx:TrackStatsExtension>
<gpxtrkx:Distance>6482</gpxtrkx:Distance>
<gpxtrkx:MovingTime>4474</gpxtrkx:TimerTime>
</gpxtrkx:TrackStatsExtension>
</extensions>
<trkseg>
<trkpt lat="47.1075830329" lon="15.4409365822">
<ele>466.49</ele>
<time>2017-03-13T13:26:10Z</time>
</trkpt>
<trkpt lat="47.1075813565" lon="15.4409420304">
<ele>466.49</ele>
<time>2017-03-13T13:26:11Z</time>
</trkpt>
...
</trkseg>
</trk>
</gpx>

Я хочу разобрать его с SimpleXML, но у меня нет доступа к TrackStatsExtension.
Как я могу пройти через TrackStatsExtension — чтобы получить расстояние и MovingTime?

Я хочу рассчитать среднюю скорость.

0

Решение

Хорошо, я выяснил это сам:

$xml = simplexml_load_file($file);
$namespaces = $xml->trk->getNamespaces(true);
$ext = $xml->trk->extensions->children($namespaces['gpxtrkx']);
$Distance = $ext->TrackStatsExtension->Distance ;
$MovingTime = $ext->TrackStatsExtension->MovingTime ;
$Speed = $Distance / $MovingTime * 3.6 ;

DEFINE ( 'NL', '<br />' ) ;
echo '--------------------' . NL ;
echo 'Distance    : ' . $Distance . ' m' . NL ;
echo 'MovingTime  : ' . $MovingTime . ' s' . NL ;
echo 'Avg speed   : ' . round ( $Speed, 2 ) . ' km/h'. NL ;
echo '--------------------' . NL ;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]