Parse XML using JavaScript [duplicate] Parse XML using JavaScript [duplicate] xml xml

Parse XML using JavaScript [duplicate]


I'm guessing from your last question, asked 20 minutes before this one, that you are trying to parse (read and convert) the XML found through using GeoNames' FindNearestAddress.

If your XML is in a string variable called txt and looks like this:

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

Then you can parse the XML with Javascript DOM like this:

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

And get specific values from the nodes like this:

//Gets house address numberxmlDoc.getElementsByTagName("streetNumber")[0].childNodes[0].nodeValue;//Gets Street namexmlDoc.getElementsByTagName("street")[0].childNodes[0].nodeValue;//Gets Postal CodexmlDoc.getElementsByTagName("postalcode")[0].childNodes[0].nodeValue;

JSFiddle


Feb. 2019 edit:

In response to @gaugeinvariante's concerns about xml with Namespace prefixes.Should you have a need to parse xml with Namespace prefixes, everything should work almost identically:

NOTE: this will only work in browsers that support xml namespace prefixes such as Microsoft Edge

// XML with namespace prefixes 's', 'sn', and 'p' in a variable called txttxt = `<address xmlns:p='example.com/postal' xmlns:s='example.com/street' xmlns:sn='example.com/streetNum'>  <s:street>Roble Ave</s:street>  <sn:streetNumber>649</sn:streetNumber>  <p:postalcode>94025</p:postalcode></address>`;//Everything else the sameif (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);}//The prefix should not be included when you request the xml namespace//Gets "streetNumber" (note there is no prefix of "sn"console.log(xmlDoc.getElementsByTagName("streetNumber")[0].childNodes[0].nodeValue);//Gets Street nameconsole.log(xmlDoc.getElementsByTagName("street")[0].childNodes[0].nodeValue);//Gets Postal Codeconsole.log(xmlDoc.getElementsByTagName("postalcode")[0].childNodes[0].nodeValue);