JavaScript 解析读取XML文档 实例代码


Posted in Javascript onJuly 07, 2009

JavaScript解析读取XML文件,主要就是加载并解析XML文件,然后就可以测试解析的XML文件的内容,打印输出来。
在线演示:http://demo.3water.com/js/2012/readxml/
注:测试的时候需要在网站中测试,iis或apache中,注意不要本地双击运行测试
index.htm

<html> 
<head> 
<title>三水点靠木</title> 
<script type="text/javascript"> 
function show() 
{ 
if (window.XMLHttpRequest) 
{ 
xmlhttp=new XMLHttpRequest(); 
} 
else 
{ 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
if(xmlhttp!=null) 
{ 
xmlhttp.open("GET","3water.xml",false); 
xmlhttp.send(null); 
var responsexml=xmlhttp.responseXML; 
var menus=responsexml.getElementsByTagName("Menus")[0]; 
var html=""; 
for(var i=0;i<menus.childNodes.length;i++) 
{ 
var menu=menus.childNodes[i]; 
html=html+"<h1>"+menu.getAttribute("name")+"</h1><br>"; 
html=html+"<h2>"+menu.childNodes[0].getAttribute("name")+"</h2><br>"; 
for(var j=0;j<menu.childNodes[0].childNodes.length;j++) 
{ 
var mi=menu.childNodes[0].childNodes[j]; 
var url=mi.getAttribute("url"); 
var txt=mi.childNodes[0].nodeValue; 
html=html+" <a href=\""+url+"\">"+txt+"</a><br>"; 
} 
} 
document.getElementById("tb").innerHTML=html; 
} 
else 
{ 
alert("你用的什么浏览器?"); 
} 
} 
</script> 
</head> 
<body onload="show()"> 
<div id="tb"></div> 
</body> 
</html>

xml文件
<?xml version="1.0" encoding="utf-8"?> 
<Menus> 
<Menu id="0" name="首页"> 
<MenuItemTitle sid="01" mid="0" name="常用选项"> 
<MenuItem mid="0" tid="01" url="Home.aspx">后台首页</MenuItem> 
<MenuItem mid="0" tid="01" url="Test.aspx">测试页</MenuItem> 
</MenuItemTitle> 
</Menu> 
<Menu id="0" name="试试"> 
<MenuItemTitle sid="01" mid="0" name="常用选项"> 
<MenuItem mid="0" tid="01" url="Home.aspx">后台首页</MenuItem> 
<MenuItem mid="0" tid="01" url="Test.aspx">测试页</MenuItem> 
</MenuItemTitle> 
</Menu> 
</Menus>

没有用TABLE ,是因为显示倒了,所以设置了一个变量,然后显示!值得今后借签!

下面是另外一个例子:
编写了一个JavaScript的类来实现读取一个XML文件中的数据,实现代码如下所示:

<script> 
/** 
* @author Shirdrn 
*/ 
function XMLDoc(){}; // 定义一个XMLDoc类 
XMLDoc.prototype.xmlFile = ""; // xmlFile为XMLDoc的一个成员,是指“.xml”文件 
XMLDoc.prototype.parseXMLDoc = function(){ // 加载解析XML文件的成员方法 
var docParser; 
if(window.ActiveXObject) { // IE浏览器支持 
docParser = new ActiveXObject("Microsoft.XMLDOM"); 
docParser.async = "false"; 
docParser.load(this.xmlFile); 
return docParser; 
} 
else if(window.DOMParser) { // Mozillia浏览器支持 
docParser = new DOMParser() 
return docParser.parseFromString(this.xmlFile,"text/xml"); 
} 
else { // 如果不是IE和Mozillia浏览器则无法解析,返回false。 
return false; 
} 
} 
XMLDoc.prototype.print = function(readTagName,readTagCnt) { // 打印输出读取的XML文件的内容信息 
var xmlDoc = this.parseXMLDoc(); // 调用成员方法parseXMLDoc()加载解析XML文件 
var users = xmlDoc.getElementsByTagName(readTagName); // 获取指定标签名称的数据的一个数组users 
for(var i=0 ; i<users.length ; i++) { // 双重循环迭代输出 
document.write("<B>第" + (i+1) + "条记录信息:</B><BR>"); 
for(var j=0 ; j<readTagCnt ; j++) { 
var tagname = users[i].childNodes[j].tagName; 
var textvalue = users[i].childNodes[j].text; 
document.write(tagname + " = " + textvalue + ".<BR>"); 
} 
} 
} var xmlDoc = new XMLDoc(); // 创建一个XMLDoc了IDE对象实例 
xmlDoc.xmlFile = "user.xml"; // 设置对象实例的成员变量的数据 
xmlDoc.print("user",6); // 打印输出 
</script>

其中,我们测试使用的XML文件user.xml的内容如下所示:
<?xml version="1.0" encoding="utf-8" ?> 
- <users> 
- <user> 
<id>22240319830000</id> 
<name>Shirdrn</name> 
<age>26</age> 
<gender>男</gender> 
<email>shirdrn@hotmail.com</email> 
<phone>13843140000</phone> 
</user> 
- <user> 
<id>22040319860001</id> 
<name>Linda</name> 
<age>23</age> 
<gender>女</gender> 
<email>linda@hotmail.com</email> 
<phone>13843140002</phone> 
</user> 
</users>

运行测试程序,解析结果输出如下所示:
第1条记录信息: 
id = 22240319830000. 
name = Shirdrn. 
age = 26. 
gender = 男. 
email = shirdrn@hotmail.com. 
phone = 13843140000. 
第2条记录信息: 
id = 22040319860001. 
name = Linda. 
age = 23. 
gender = 女. 
email = linda@hotmail.com. 
phone = 13843140002.

在解析XML文件的时候,要保证对不同类型的浏览器提供支持,这里主要对IE和Mozillia浏览器,否则可能无法解析。
关于其它的说明,可以参看程序中的注释。
Javascript 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
js word表格动态添加代码
Jun 07 Javascript
JavaScript 程序编码规范
Nov 23 Javascript
基于JQUERY的多级联动代码
Jan 24 Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
模拟javascript中的sort排序(简单实例)
Aug 17 Javascript
详解微信小程序 页面跳转 传递参数
Dec 08 Javascript
Bootstrap表格使用方法详解
Feb 17 Javascript
React 高阶组件入门介绍
Jan 11 Javascript
使用layui的router来进行传参的实现方法
Sep 06 Javascript
vue+swiper实现左右滑动的测试题功能
Oct 30 Javascript
javascript 新浪背投广告实现代码
Jul 07 #Javascript
JavaScript 对象、函数和继承
Jul 07 #Javascript
js 日期转换成中文格式的函数
Jul 07 #Javascript
javascript 面向对象思想 附源码
Jul 07 #Javascript
jquery BS,dialog控件自适应大小
Jul 06 #Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
Jul 06 #Javascript
javascript 写类方式之十
Jul 05 #Javascript
You might like
php heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
python实现线程池的方法
2015/06/30 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
Python龙贝格法求积分实例
2020/02/29 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
个人更名证明
2015/06/23 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python