首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从XML获取特定标记

从XML获取特定标记
EN

Stack Overflow用户
提问于 2017-09-14 23:47:14
回答 1查看 571关注 0票数 2

我有个小问题。

我使用$xml = simplexml_load_file($path);加载一个XML文件,然后使用print_r($xml);显示它。

结果我得到了这样的结果:

代码语言:javascript
复制
    SimpleXMLElement Object
(    
    [trk] => SimpleXMLElement Object
        (
            [name] => GraphHopper Track
            [trkseg] => SimpleXMLElement Object
                (
                    [trkpt] => Array
                        (
                            [0] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [lat] => 44.847241
                                            [lon] => 20.46966
                                        )

                                    [ele] => 69.6
                                    [time] => 2017-09-08T09:42:44Z
                                )

                            [1] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [lat] => 44.847439
                                            [lon] => 20.46906
                                        )

                                    [ele] => 69.6
                                    [time] => 2017-09-08T09:42:56Z
                                )

                        )

                )

        )

)

如何使用PHP中的foreach循环从XML中提取[lat][lon][time]标记?

实际的XML文件:

代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8" standalone="no" ?><gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creator="Graphhopper version 0.10" version="1.1" xmlns:gh="https://graphhopper.com/public/schema/gpx/1.1">
<metadata><copyright author="OpenStreetMap contributors"/><link href="http://graphhopper.com"><text>GraphHopper GPX</text></link><time>2017-09-08T09:42:44Z</time></metadata>
<trk><name>GraphHopper Track</name><trkseg>
<trkpt lat="44.847241" lon="20.46966"><ele>69.6</ele><time>2017-09-08T09:42:44Z</time></trkpt>
<trkpt lat="44.847439" lon="20.46906"><ele>69.6</ele><time>2017-09-08T09:42:56Z</time></trkpt>
</trkseg>
</trk>
</gpx>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-15 00:28:55

根据您的XML结构,应该是这样的:

代码语言:javascript
复制
foreach($sxml->trk->trkseg->trkpt as $data) {
    echo $data['lat'] .  PHP_EOL . $data['lon'] . PHP_EOL . $data->time . PHP_EOL;
}

使用->输入每个级别。latlon是属性,所以在那里使用[]

演示:https://3v4l.org/oNLSg

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46223445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档