0

使用できるように、ジオコードの緯度と経度のデータを XML に変換しようとしています。

これは、googleapi から使用している URL の例です。

http://maps.googleapis.com/maps/api/geocode/json?address=1600%20Amphitheatre%20Parkway,%20Mountain%20View,%20CA&sensor=false

これまでの私のコードは次のとおりです。

    if (!function_exists('curl_init')){
        die('Sorry cURL is not installed!');
    }

    $c = curl_init();
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_URL, $request_url);
    $contents = curl_exec($c);
    curl_close($c);

    $xml = json_decode( json_encode( simplexml_load_string( $contents ) ), TRUE );
    var_dump($xml, $contents, $c); exit();

コンテンツは返されていますが、これは一貫して $xml で false を返しています。

4

2 に答える 2

0
$xml = json_decode( json_encode( simplexml_load_string( $contents ) ), TRUE );

simplexml_load_stringを使用して JSON データを XML に変換しようとしています。simplexml_load_string のマニュアルを読むと、 $contents が「整形式の XML 文字列」であることがわかります。あなたの場合、$contents は JSON data を表す文字列です。

XML が必要な場合は、代わりに Google API のこの部分にアクセスする必要があります。2 つのリンクの違い:

SimpleXMLElementを使用した例:

$output = new SimpleXMLElement($contents);
var_dump($output);
于 2013-05-28T10:30:09.203 に答える
0

json を xml に変換する必要はありません。

デフォルトでは、Google サービスは 2 種類の出力を提供します。1 つは JSON で、もう 1 つは XML です。

あなたが言及したURLで、文字「json」を文字「xml」に置き換えて、次のようになり、xml出力が得られるようにします。

http://maps.googleapis.com/maps/api/geocode/xml?address=1600%20Amphitheatre%20Parkway,%20Mountain%20View,%20CA&sensor=false

上記の URL をブラウザで開くと、結果が xml で表示されます。

上記の URL をブラウザで直接指定したときに得られたサンプル出力の抜粋を次に示します。

<GeocodeResponse>
<status>OK</status>
<result>
<type>street_address</type>
<formatted_address>
1600 Amphitheatre Parkway, Mountain View, CA 94043, USA
</formatted_address>
<address_component>

したがって、コードで json 関数を削除し、直接 $xml = simplexml_load_string( $contents )... を使用できます。

...

于 2013-05-28T10:28:59.717 に答える