1

以下を返すAPIを書きました

 <location><lat>41.47033705</lat><lon>-81.93612862</lon></location>
 <location><lat>41.470320224762</lat><lon>-81.9364535808563</lon></location>
 <location><lat>41.4704650640488</lat><lon>-81.9449239969254</lon></location>
 <location><lat>41.4780235290527</lat><lon>-81.8454140424728</lon></location>
 <location><lat>41.48597253</lat><lon>-81.82579113</lon></location>

これを取得する AJAX 呼び出しがあり、JavaScript で使用する必要があります。

最終的には2dが欲しいと思いますArray [lat,lon]

これを行うためのコードの最小量は何ですか?

4

4 に答える 4

2

getElementsByTagName応答が有効な XML であると仮定すると、配列を使用してプッシュできます。

var arr = [];
for (var location in response.getElementsByTagName('location'))
{
    arr.push([
        parseFloat(location.getElementsByTagName('lat')[0]), 
        parseFloat(location.getElementsByTagName('lon')[0])
    ]);
}
于 2013-08-20T00:53:34.173 に答える
1

正規表現 101 デモ

正規表現

<lat>([^<]+)<\/lat><lon>([^<]+)<\/lon>

g(グローバル) フラグの使用

説明

<lat> Literal <lat>
1st Capturing group ([^<]+) 
    Negated char class [^<] 1 to infinite times [greedy] matches any character except:
        < The character <
<\/lat><lon> Literal </lat><lon>
2nd Capturing group ([^<]+) 
    Negated char class [^<] 1 to infinite times [greedy] matches any character except:
        < The character <
<\/lon> Literal </lon>

g modifier: global. All matches (don't return on first match)

視覚化

正規表現の視覚化


上記を使用して特定の問題を解決する

デモjsFiddle

JS

var text = " <location><lat>41.47033705</lat><lon>-81.93612862</lon></location><location><lat>41.470320224762</lat><lon>-81.9364535808563</lon></location><location><lat>41.4704650640488</lat><lon>-81.9449239969254</lon></location><location><lat>41.4780235290527</lat><lon>-81.8454140424728</lon></location><location><lat>41.48597253</lat><lon>-81.82579113</lon></location>";

var myregexp = /<lat>([^<]+)<\/lat><lon>([^<]+)<\/lon>/g;
var results = new Array();
var match = myregexp.exec(text);
while (match != null) {
    var result = new Array();
    for (var i = 1; i < match.length; i++) {
        result.push(match[i]);
    }
    results.push(result);
    match = myregexp.exec(text);
}

console.log(results);

変数resultsには 2 次元配列 [lat, lon] が含まれます

于 2013-08-20T02:32:24.163 に答える
1

JQuery のセレクター エンジンを使用してコードを解析するだけです。

<div id="data"> ... </data>簡単に選択できるように要素をラップすると、次のことができます。

var _locations = $('#data').find('location');
var my_data = [];

$.each(_locations, function(index, loc) {
    var _lat = $(loc).find('lat');
    var _lon = $(loc).find('lon');

    my_data.push([_lat.text(), _lon.text()]);
})

// my_data will contain a 2D array of your lat, lon

幸運を

-キル

于 2013-08-20T00:54:04.363 に答える
0

XmlHttmlRequest を介して AJAX 呼び出しを行い、responseXML を取得できます。次に、XmlDocument メソッドとプロパティを使用してデータを解析できます。

結果に対して Xpath クエリを実行して、必要なものを正確に選択することもできます。

于 2013-08-20T00:50:42.753 に答える