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 delete 使用示例代码
Mar 29 Javascript
js中top/parent/frame概述及案例应用
Feb 06 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
推荐4个原生javascript常用的函数
Jan 12 Javascript
BootStrap selectpicker
Jun 20 Javascript
判断js的Array和Object的实现方法
Aug 29 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
Apr 17 Javascript
使用Bootrap和Vue实现仿百度搜索功能
Oct 26 Javascript
jQuery中复合选择器简单用法示例
Mar 31 jQuery
JavaScript 判断iPhone X Series机型的方法
Jan 28 Javascript
vue基础知识--axios合并请求和slot
Jun 04 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 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获取MySql新增记录ID值的3种方法
2014/06/24 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
python模拟登录百度贴吧(百度贴吧登录)实例
2013/12/18 Python
python pdb调试方法分享
2014/01/21 Python
Python入门篇之正则表达式
2014/10/20 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
解决Python一行输出不显示的问题
2018/12/03 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
土木工程实习生自我鉴定
2013/09/19 职场文书
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
社区消防工作实施方案
2014/03/21 职场文书
会计求职信
2014/05/29 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
工作态度检讨书范文
2015/05/06 职场文书
创业计划书之情侣餐厅
2019/09/29 职场文书
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫