我想在foreach中回应所有“gx:coord”。
这就是我现在所拥有的:
# XML
$my_track = new SimpleXMLElement(file_get_contents('track.kml'));
echo $my_track->Document->description;
但是我如何在foreach循环中使用gx:coord得到一个值?
<Document>
<description>Test</description>
<gx:MultiTrack>
<altitudeMode>absolute</altitudeMode>
<gx:interpolate>1</gx:interpolate>
<gx:Track>
<when>2012-07-23T15:00:44.000Z</when>
<gx:coord>2.508616 50.641113 46.0</gx:coord>
<when>2012-07-23T15:00:44.000Z</when>
<gx:coord>2.508616 50.641113 46.0</gx:coord>
<when>2012-07-23T15:00:59.000Z</when>
<gx:coord>2.508616 50.641113 49.0</gx:coord>
</gx:Track>
</gx:MultiTrack>
</Document>
我希望这是foreach的结果:
2.508616 50.641113 46.0
2.508616 50.641113 46.0
2.508616 50.641113 49.0
需要真正的帮助。
答案 0 :(得分:0)
<?php
$xml = '<Document>
<description>Test</description>
<gx:MultiTrack>
<altitudeMode>absolute</altitudeMode>
<gx:interpolate>1</gx:interpolate>
<gx:Track>
<when>2012-07-23T15:00:44.000Z</when>
<gx:coord>2.508616 50.641113 46.0</gx:coord>
<when>2012-07-23T15:00:44.000Z</when>
<gx:coord>2.508616 50.641113 46.0</gx:coord>
<when>2012-07-23T15:00:59.000Z</when>
<gx:coord>2.508616 50.641113 49.0</gx:coord>
</gx:Track>
</gx:MultiTrack>
</Document>';
$data = simplexml_load_string( $xml );
// Or $data = simplexml_load_file( $filename );
foreach ( $data -> children() -> MultiTrack -> Track -> coord as $value ) {
echo $value . '<br />';
}
?>
答案 1 :(得分:-1)
我也有同样的问题,我使用了xpath 像:
$arr = xpath('//gx:coord');
了解更多信息:
以及使用命名空间
指定的更多内容如果您获得没有命名空间的文件
,这也会有所帮助