Processar o XML usando o JavaScript [duplicado]
- Cross-Browser Javascript XML Processing[closed] 3 respostas
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.
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;
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.