0

PHP の echo を使用して XML を出力する (データベースに接続する) php ファイルからデータを抽出しています。配列にデータを入力したいのですが、方法が見つかりません。JSON、AJAX、XMLHttpRequest の例を検索して見つけましたが、何も機能しません。

基本的に、これを変換する必要があります:

//.php ファイルから解析された XML

<markers>
 <marker name="Bikes" desc="116 18" lat="4.698479" lon="-74.048111" tipo="Store"/>
 <marker name="Kooning" desc="116 16" lat="4.697316" lon="-74.044807" tipo="Store"/>
 <marker name="Bike House" desc="15 104" lat="4.692983" lon="-74.044952" tipo="Store"/>
</markers

これに:

//JS

var Store = [
             ['Bikes', 4.698479, -74.048111, '116 18'],
             ['Kooning', 4.697316, -74.044807, '116 16'],
             ['Bike House', 4.692983, -74.044952, '15 104'],
            ];

どうもありがとうございました。誰かが私を助けてくれることを願っています。

4

1 に答える 1

1

XML を JS 配列に変換する JavaScript のみの方法が必要な場合は、JXON を参照してください。これは、あなたが望むことを行うためのいくつかのアルゴリズムを含む非常に優れた記事です。

私の答えでは、php インストールでsimpleXMLを使用できる必要があります。また、xml 構造のため、私の回答では desc 属性が JS 配列の 2 番目に配置され、配列に tipo 属性も含まれていることに注意してください。説明したとおりの順序と値の配列が必要な場合は、任意の順序で属性にアクセスする必要があります。

<?php

$xml = <<<xml
<markers>
 <marker name="Bikes" desc="116 18" lat="4.698479" lon="-74.048111" tipo="Store"/>
 <marker name="Kooning" desc="116 16" lat="4.697316" lon="-74.044807" tipo="Store"/>
 <marker name="Bike House" desc="15 104" lat="4.692983" lon="-74.044952" tipo="Store"/>
</markers>
xml;

$markers = new SimpleXMLElement($xml);

foreach ($markers->marker as $marker) {
    $mark_arr = array();
    foreach ($marker->attributes() as $attr) {
            $mark_arr[] = (string) $attr;
    }
    $marks_arr[] = $mark_arr;
}

echo '<script>var Store = '.json_encode($marks_arr).';</script>';

?>

潜在的により有用な答えは、キーを介して値にアクセスできるように、これを JS オブジェクトにエクスポートすることです。その答えは次のとおりです。

<?php

$xml = <<<xml
<markers>
 <marker name="Bikes" desc="116 18" lat="4.698479" lon="-74.048111" tipo="Store"/>
 <marker name="Kooning" desc="116 16" lat="4.697316" lon="-74.044807" tipo="Store"/>
 <marker name="Bike House" desc="15 104" lat="4.692983" lon="-74.044952" tipo="Store"/>
</markers>
xml;

$markers = new SimpleXMLElement($xml);

foreach ($markers->marker as $marker) {
    $mark_arr = array();
    foreach ($marker->attributes() as $key => $attr) {
            $mark_arr[$key] = (string) $attr;
    }
    $marks_arr[] = $mark_arr;
}

echo '<script>var Store = '.json_encode($marks_arr).';</script>';
于 2013-07-02T20:54:21.853 に答える