我有点问题。
我使用$xml = simplexml_load_file($path);
加载XML文件,然后使用print_r($xml);
显示它。
结果我得到了这个:
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文件:
<?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>
答案 0 :(得分:0)
根据您的XML结构,应该这样做:
foreach($sxml->trk->trkseg->trkpt as $data) {
echo $data['lat'] . PHP_EOL . $data['lon'] . PHP_EOL . $data->time . PHP_EOL;
}
使用->
输入每个级别。 lat
和lon
是属性,因此请使用[]
。