2012-01-19 3 views
3

좋아요 자바에서 get 요청으로 XML을 구문 분석하려고합니다. 이 내가 나중에 액세스 할 수 있도록 결과 VAR에서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> 

같은 XML 보이는 방법이다 나는 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 일) 항목의 가격을 경고 할 수 저장하지만, 질문은 나중에 저장할 수 있도록 저장하는 방법입니다. 빨간 부분은 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: "..." }] 

작업 바이올린 참조 : 자바 스크립트에서 DOM 구조를 탐색에 대한 자세한 내용은 http://jsfiddle.net/nrabinowitz/XZnXn/

을, 당신은 MDN DOM Reference보고 할 수 있습니다

+0

저는 질문과 몇 가지 의견이 있습니다. TI는 무엇입니까 (귀하의 게시물을 AppCelerator로 태그 했으므로, 그와 관련이 있다고 가정하고 있습니다)? 'getElementsByTagName'을 사용하면 단일 값이 아닌 배열이됩니다. 지정한 이름을 가진 단 하나의 태그가있을 수 있지만 배열 (사실 노드 목록에 있음)에있을 것입니다. 같은 '인덱스'에 '이름'과 '값'을 모두 저장하기 때문에 '데이터'배열은 2D이거나 객체를 포함해야합니다. – Abbas

답변

2

이 시도 (나는 이것이 매우 중요하지 않다 생각) .

+0

이것은 정확히 내가 원하는 것이지만, 바로 잡아 보도록하겠습니다. 이제 변수 데이터에 배열이 있으므로 다음과 같이 배열에서 요소에 액세스 할 수 있습니다 : data.markers1.name ?? 나 맞아? –

+1

배열은'[]'로 접근하므로'data [0] .name' 등이됩니다. – nrabinowitz