JavaScript解析XML文件

目前也有一些使用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"。





你可能感兴趣的:(JavaScript解析XML文件)