0

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

これについては本当に助けが必要です。

4

2 に答える 2

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 />';
}

?>
于 2012-07-23T07:32:08.543 に答える
-1

私も同じ問題を抱えていて、次のような xpath を使用しました。

$arr = xpath('//gx:coord');

詳細については、次を参照してください。

さらに、名前空間で指定

これは、名前空間のないファイルを取得した場合に何が起こるかにも役立ちます

于 2017-01-16T08:28:49.813 に答える