用 PHP 解析 GPX 文件,获取 <extensions>元素值 [英] GPX file parse with PHP, get <extensions> element values

查看:33
本文介绍了用 PHP 解析 GPX 文件,获取 <extensions>元素值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 xml/gpx 文件:

<gpxtpx:TrackPointExtension><gpxtpx:hr>100</gpxtpx:hr></gpxtpx:TrackPointExtension></扩展名></trkpt>...</gpx>

加载:

$xml=simplexml_load_file($gpx_file);

解析女巫

foreach($xml->trk->trkseg->trkpt as $point){}

没关系.但我无法获得/extension//extension/

的内容

print_r($point) 是

SimpleXMLElement 对象([@attributes] =>大批([纬度] =>50.04527[lon] =>14.433993333333333)[ele] =>280.5[时间] =>2014-06-30T20:57:21.71[扩展] =>SimpleXMLElement 对象())

而且我无法获得 SimpleXMLElement 对象.

Print_r($point->扩展名是:

SimpleXMLElement 对象()

我尝试将 SimpleXML 对象转换为数组和其他类似的方式,但我失败了 - 输出是空数组.

进入字符串/数组的任何想法/方法?

示例 gpx 位于 www.vovcinec.net/gpx/e.gpx (~700kB)

解决方案

不能直接获取,因为它们在命名空间中,需要先使用 getNamespaces() 方法.考虑这个例子:

$xml = simplexml_load_file('e.gpx');foreach($xml->trk->trkseg->trkpt as $trkpt) {$namespaces = $trkpt->getNamespaces(true);$gpxtpx = $trkpt->extensions->children($namespaces['gpxtpx']);$hr = (string) $gpxtpx->TrackPointExtension->hr;echo '

';打印_r($hr);echo '</pre>';}

i have xml/gpx file:

<?xml version="1.0" encoding="utf-8"?>
<gpx xsi:schemaLocation="http://www.topografix.com/GPX/1/1">
  <metadata>
....
  </metadata>
  <trk>
    <trkseg>
      <trkpt lat="50.04551333333333" lon="14.434101666666667">
        <ele>282</ele>
        <time>2014-06-30T20:56:03.92</time>
        <extensions>
          <gpxtpx:TrackPointExtension>
            <gpxtpx:hr>100</gpxtpx:hr>
          </gpxtpx:TrackPointExtension>
        </extensions>
      </trkpt>
...
</gpx>

Load:

$xml=simplexml_load_file($gpx_file);

parse witch

foreach($xml->trk->trkseg->trkpt as $point){}

Thats fine. But i cant get content of /extension//extension/

print_r($point) is

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [lat] => 50.04527
            [lon] => 14.433993333333333
        )

    [ele] => 280.5
    [time] => 2014-06-30T20:57:21.71
    [extensions] => SimpleXMLElement Object
        (
        )
)

and i cannot get SimpleXMLElement Object.

Print_r($point->extension is:

SimpleXMLElement Object
(
)

I try Converting a SimpleXML Object to an Array and other similiar way, but i have failed - output is empty array.

Any idea/way to get into string/array ?

Sample gpx is on www.vovcinec.net/gpx/e.gpx (~700kB)

解决方案

You can't get them directly since they are in namespaces, you need to use getNamespaces() method first. Consider this example:

$xml = simplexml_load_file('e.gpx');
foreach($xml->trk->trkseg->trkpt as $trkpt) {

    $namespaces = $trkpt->getNamespaces(true);
    $gpxtpx = $trkpt->extensions->children($namespaces['gpxtpx']);
    $hr = (string) $gpxtpx->TrackPointExtension->hr;
    echo '<pre>';
    print_r($hr);
    echo '</pre>';
}

这篇关于用 PHP 解析 GPX 文件,获取 &lt;extensions&gt;元素值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆