Разбор XML с помощью JavaScript [дубликат]
этот вопрос уже есть ответ здесь:
Мне нужно уметь анализировать XML с помощью JavaScript. XML будет находиться в переменной. Я предпочел бы не использовать jQuery или другие фреймворки.
Я посмотрел на это, XML > чтение jQuery.
2 ответа:
Я догадываюсь от вашего последний вопрос, спросил за 20 минут до этого, что вы пытаетесь разобрать (читать и конвертировать) XML, найденный с помощью Findnearestaddress GeoNames'.
если ваш 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);
который я получил от https://stackoverflow.com/a/8412989/1232175.