2012-01-19 21 views
3

私はJavascriptでgetリクエストからXMLを解析しようとしています。 これは、XMLは、私は(私はそれをGoogleマップのマーカーを構築しています)、後でそれをアクセスできるように配列にマーカーをプッシュしようとしていますJavascfiptでのXMLの解析

<markers> 
<marker> 
<name> 
<![CDATA[ Pan Africa Market ]]> 
</name> 
<address> 
<![CDATA[ 1521 1st Ave, Seattle, WA ]]> 
</address> 
<lat>47.608940</lat> 
<lng>-122.340141</lng> 
<price>150</price> 
<type>restaurant</type> 
</marker> 
</markers> 

どのように見えるかです

結果varに私は、get要求からの応答(これは完璧に動作している私は「params.length」を警告することができます原因私はそれを知っている)

var result = this.responseText; 

var xml = Ti.XML.parseString(result); 
var items = xml.documentElement.getElementsByTagName("marker"); 

var name = xml.documentElement.getElementsByTagName("name"); 
var value = xml.documentElement.getElementsByTagName("address"); 

var data = []; 

for (var i=0;i<items.length;i++) { 
     alert(items.item(i).getElementsByTagName("price").item(0).text); 



} 

私は(もちろん1により1)品目の価格を警告することができますを保存しますが、問題はどうすればそれを保存して後でアクセスできるかです。 私はそれをforループのデータ変数にプッシュしなければならないが、私はちょうどその方法を知らない。

ありがとうございます。 PD Im Appceleratorで使用しています。

var markers = xml.documentElement.getElementsByTagName("marker"); 

var data = []; 

for (var i=0;i<markers.length;i++) { 
    console.log(markers[i].getElementsByTagName("name")[0]); 
    data.push({ 
     name: markers[i].getElementsByTagName("name")[0].textContent, 
     address: markers[i].getElementsByTagName("address")[0].textContent 
    }) 
} 
// data is now [{name: "...", address: "..." }] 

作業フィドルを参照してください:JavaScriptでDOM構造をナビゲートについての詳細はhttp://jsfiddle.net/nrabinowitz/XZnXn/

を、あなたはMDN DOM Referenceで見たいと思うかもしれません

+0

私は質問があります。TIとは何ですか(あなたの投稿をAppCeleratorとしてタグ付けして以来、私はそれが何かと関係していると推測しています)。 'getElementsByTagName'を使用すると、単一の値ではなく配列が取得されます。あなたが指定した名前のタグが1つしかないかもしれませんが、それは配列(実際にはノードのリストにあります)になるでしょう。あなたは '名前'と '値'を同じインデックスに保存したいので、データ配列は2Dでなければならないか、オブジェクトを含んでいなければなりません。 – Abbas

答えて

2

はこれを試してみてください(私はこれは非常に重要ではないと思います) 。

+0

これは私が必要とするものですが、これを真っ直ぐにしましょう...変数データに配列が含まれているので、配列の要素に次のようにアクセスできます:data.markers1.name ??私は正しいですか? –

+1

配列は '[]'でアクセスされるため、 'data [0] .name'などとなります。 – nrabinowitz