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 相关文章推荐
JavaScript入门教程(5) js Screen屏幕对象
Jan 31 Javascript
基于jQuery的动态表格插件
Mar 28 Javascript
javascript学习笔记(九) js对象 设计模式
Jun 19 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
Jan 23 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
jQuery右下角悬浮广告实例
Oct 17 Javascript
解决拦截器对ajax请求的拦截实例详解
Dec 21 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
Apr 07 Javascript
layui框架中layer父子页面交互的方法分析
Nov 15 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
May 07 Javascript
vue 父组件中调用子组件函数的方法
Jun 06 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
关于手调机和数调机的选择
2021/03/02 无线电
Php+SqlServer实现分页显示
2006/10/09 PHP
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
python进程管理工具supervisor使用实例
2014/09/17 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
python素数筛选法浅析
2018/03/19 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
详解Python是如何实现issubclass的
2019/07/24 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
导师评语大全
2014/04/26 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
解除施工合同协议书
2014/10/17 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书