目前也有一些使用JavaScript解析XML文件的开源库:
https://github.com/Leonidas-from-XIV/node-xml2js
https://github.com/tautologistics/node-htmlparser
https://github.com/ndebeiss/jsXmlSaxParser
但这些库的讲解不是很清楚易懂。
本文中使用的xml解析方法来自于:http://www.w3school.com.cn/xml/xml_parser.asp
原理是:“所有现代浏览器都有读取和操作 XML 的内建 XML 解析器。解析器把 XML 载入内存,然后把它转换为可通过 JavaScript 访问的 XML DOM 对象。”
下面的代码来自:w3school中的例子:
parsexml.html
<html> <head> <title>parsexml</title> </head> <body> <h1>W3School.com.cn Internal Note</h1> <p> <b>To:</b> <span id="to"></span> <br /> <b>From:</b> <span id="from"></span> <br /> <b>Message:</b> <span id="message"></span> </p> <script type="text/javascript"> if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","/expriment/note.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; document.getElementById("to").innerHTML= xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; document.getElementById("from").innerHTML= xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue; document.getElementById("message").innerHTML= xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue; </script> </body> </html>node.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- Copyright w3school.com.cn --> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>也许你将这个代码拷贝到本地,并修改里面的连接之后,却发现仍旧运行不了。
原因是这里使用了XmlHttpRequest对象,所以这个代码必须运行在服务器下,例如tomcat。
http://www.w3school.com.cn/xml/xml_http.asp,这里有关于XmlHttpRequest对象的讲解。
我这里将该文件放在我的github上面,就成功运行了。地址是:http://benzeph.github.io/expriment/parsexml.html
需要注意
xmlhttp.open("GET","/expriment/note.xml",false);open函数中URL地址,是以你服务器的根路径为相对路径的,所以就算note.xml和xmlparse.html在同一个文件夹下,也不能直接用"note.xml"。