Мне нужно иметь возможность анализировать XML с помощью JavaScript. XML будет в переменной. Я бы предпочел не использовать jQuery или другие фреймворки.
Я посмотрел на это, XML > чтение jQuery.
Мне нужно иметь возможность анализировать XML с помощью JavaScript. XML будет в переменной. Я бы предпочел не использовать jQuery или другие фреймворки.
Я посмотрел на это, XML > чтение jQuery.
Я догадываюсь из вашего последнего вопроса, спросил за 20 минут до этого, что вы пытаетесь разобрать (читать и конвертировать) XML, найденный с помощью GeoNames 'FindNearestAddress.
Если ваш XML находится в строковой переменной с именем txt
и выглядит так:
<address>
<street>Roble Ave</street>
<mtfcc>S1400</mtfcc>
<streetNumber>649</streetNumber>
<lat>37.45127</lat>
<lng>-122.18032</lng>
<distance>0.04</distance>
<postalcode>94025</postalcode>
<placename>Menlo Park</placename>
<adminCode2>081</adminCode2>
<adminName2>San Mateo</adminName2>
<adminCode1>CA</adminCode1>
<adminName1>California</adminName1>
<countryCode>US</countryCode>
</address>
Затем вы можете проанализировать XML с помощью Javascript DOM следующим образом:
if (window.DOMParser)
{
parser = new DOMParser();
xmlDoc = parser.parseFromString(txt, "text/xml");
}
else // Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(txt);
}
И получить конкретные значения из таких узлов:
//Gets house address number
xmlDoc.getElementsByTagName("streetNumber")[0].childNodes[0].nodeValue;
//Gets Street name
xmlDoc.getElementsByTagName("street")[0].childNodes[0].nodeValue;
//Gets Postal Code
xmlDoc.getElementsByTagName("postalcode")[0].childNodes[0].nodeValue;
Далее будет анализироваться XML-строка в XML-документе во всех основных браузерах, включая Internet Explorer 6. После этого вы можете использовать обычные методы/свойства обхода DOM, такие как childNodes и getElementsByTagName(), чтобы получить узлы вы хотите.
var parseXml;
if (typeof window.DOMParser != "undefined") {
parseXml = function(xmlStr) {
return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
};
} else if (typeof window.ActiveXObject != "undefined" &&
new window.ActiveXObject("Microsoft.XMLDOM")) {
parseXml = function(xmlStr) {
var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlStr);
return xmlDoc;
};
} else {
throw new Error("No XML parser found");
}
Пример использования:
var xml = parseXml("<foo>Stuff</foo>");
alert(xml.documentElement.nodeName);
Что я получил от fooobar.com/info/34578/....