Получить значение переменной из XML в JavaScript. Чистый путь - PullRequest
3 голосов
/ 20 апреля 2010

У меня есть XML:

<point>
    ...
    <longitude>34.123123</longitude>
</point>
<point>
    ...
    <longitude>11.12534534</longitude>
</point>
<point>
    ...
    <longitude>32.567653</longitude>
</point>
<point>
    ...
    <longitude>33.345345</longitude>
</point>
...

Задача:

получить значения <longitude> в JavaScript (в переменной).

Какой самый чистый способ?

Можно сделать это без XSLT (без создания фиктивных элементов)?


Обновление:

Я очень плохо объяснил.

XML динамически формируется на сервере, затем там же проходит XSLT и получается HTML, который отправляется в браузер.

Возможно, в HTML необходимо создать фиктивный элемент, в который записать значение долготы, затем прочитать его значение в javascript из элемента на странице.

Как можно по-другому сделать?

Ответы [ 3 ]

4 голосов
/ 20 апреля 2010

Как насчет jQuery?

$.ajax({
   type: "GET",
   url: "relative/path/to/yourfile.xml",
   dataType: "xml",
   success: function(xml) {
     $(xml).find('point').each(function(){
       var longitude = $(this).find('longitude').text()

       // doing something with your longitude variable
     });
   }
});
2 голосов
/ 20 апреля 2010

Используйте XML-парсер , предполагая, что у вас есть строка.Если это файл, AJAX должен выполнить тяжелый анализ для вас.Вот пример: http://jsfiddle.net/Jr5ga/

/**
 * Parse XML from string
 * Abstract away browser differences
 */
​function parseXML(text) {
    if (window.DOMParser) {
        parser = new DOMParser();
        doc = parser.parseFromString(text,"text/xml");
    }
    else { // Internet Explorer
        doc = new ActiveXObject("Microsoft.XMLDOM");
        doc.async="false";
        doc.loadXML(text);
    }
    return doc;
}

Чтобы получить значения долготы из этого XML-документа, вы можете использовать функцию getElementsByTagName.После того, как все узлы долготы выбраны, выполните цикл по ним и, чтобы получить текстовое содержимое в каждом узле, вызовите childNodes[0], поскольку у него есть только 1 дочерний - текстовый узел, и вызовите nodeValue в текстовом узле, чтобы получить значение какстрока.

var xml = parseXML(string);

var longitudes = xml.getElementsByTagName("longitude");
var result = [];

for(var i = 0; i < longitudes.length; i++) {
    // add longitude value to "result" array
    result.push(longitudes[i].childNodes[0].nodeValue);
}
2 голосов
/ 20 апреля 2010

Вам может помочь вызов AJAX для источника XML. Но это зависит от того, где вы храните XML-документ.

Проверьте следующую ссылку, особенно часть XMLHttpRequest:

http://www.w3schools.com/ajax/default.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...