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 相关文章推荐
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
表单验证的完整应用案例探讨
Mar 29 Javascript
jQuery获取节点和子节点文本的方法
Jul 22 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
Aug 21 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
Aug 02 Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
Sep 28 Javascript
JS使用new操作符创建对象的方法分析
May 30 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
Mar 09 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
Jul 11 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 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 is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
python中的装饰器详解
2015/04/13 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
Python中str.join()简单用法示例
2018/03/20 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
将python安装信息加入注册表的示例
2019/11/20 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
Python实现点云投影到平面显示
2020/01/18 Python
华为c/c++笔试题
2016/01/25 面试题
学期研究性学习个人的自我评价
2014/01/09 职场文书
环保标语大全
2014/06/12 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
法务专员岗位职责
2015/02/14 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2015年药店工作总结
2015/04/20 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
党性修养心得体会2016
2016/01/21 职场文书
如何Python使用re模块实现okenizer
2022/04/30 Python