Processar o XML usando o JavaScript [duplicado]

[[2] esta pergunta já tem uma resposta aqui:

Preciso de ser capaz de processar XML usando JavaScript. O XML estará em uma variável. Eu preferiria não usar jQuery ou outros frameworks.

já olhei para isto, XML > leitura do jQuery.

Author: hjpotter92, 2013-07-12

2 answers

Estou a adivinhar pela última pergunta , feita 20 minutos antes desta, que está a tentar analisar (ler e converter) o XML encontrado através da utilização do' FindNearestAddress ' do GeoNames.

Se o seu XML estiver numa variável de texto chamada txt e se parecer com isto:

<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>

Então você pode processar o XML com o DOM Javascript assim:

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);
}

E obter valores específicos dos nós como este:

//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;

JSFiddle

 135
Author: Enigmadan, 2017-05-23 12:02:53

O seguinte irá processar uma string XML em um documento XML em todos os navegadores principais, incluindo o Internet Explorer 6. Uma vez que você tenha isso, você pode usar os métodos/propriedades habituais DOM transversais, tais como childNodes e getElementsByTagName() para obter os nós que você deseja.

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");
}

Uso de exemplo:

var xml = parseXml("<foo>Stuff</foo>");
alert(xml.documentElement.nodeName);
Que recebi de https://stackoverflow.com/a/8412989/1232175.
 13
Author: faino, 2017-07-07 20:17:07