使用JavaScriptparsingXML

我需要能够使用JavaScriptparsingXML。 XML将在一个variables中。 我宁愿不使用jQuery或其他框架。

我已经看了这个, XML> jQuery阅读 。

我从你最后一个问题开始猜测,在这个问题的 20分钟之前,你正试图parsing(读取和转换)通过使用GeoNames的FindNearestAddressfind的XML。

如果你的XML是一个名为txt的stringvariables,如下所示:

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

然后你可以用这样的Javascript DOMparsingXML:

 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; 

的jsfiddle

以下内容将在所有主stream浏览器(包括Internet Explorer 6)中将XMLstringparsing为XML文档。一旦拥有了,就可以使用常用的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获得; 。