Разбор XML в Javascfipt - PullRequest
       11

Разбор XML в Javascfipt

3 голосов
/ 19 января 2012

Хорошо, я пытаюсь проанализировать XML из запроса get в Javascript.Вот как выглядит 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>

Я пытаюсь вставить маркер в массив, чтобы я мог получить к нему доступ позже (я создаю с ним маркер карт Google)

Вvar var я сохраняю ответ от запроса на получение (это работает отлично, я знаю это, потому что я могу предупредить "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);



}

Я могу предупредить цены предметовконечно), но вопрос в том, как я могу сохранить это, чтобы я мог получить к нему доступ позже.Я красный, что мне нужно вставить его в переменную данных в цикле for, но я просто не знаю, как.

Заранее спасибо.Я использую его в Appcelerator.(Думаю это не очень важно)

1 Ответ

2 голосов
/ 19 января 2012

Попробуйте это:

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: "..." }]

См. Рабочую скрипку: http://jsfiddle.net/nrabinowitz/XZnXn/

Чтобы больше узнать о структуре DOM в Javascript, вы можете обратиться к MDN DOM Reference .

...