JQuery读取XML文件数据并显示的实现代码


Posted in Javascript onDecember 16, 2009

准备工作

在开始之前我们需要做如下准备工作:

1.创建一个名为DEMO.html空白html文件;(推荐使用Editplus创建)

2.熟悉JQuery框架的基本语法;(不熟悉没关系,后面我会注释得很详细)

3.创建一个名为data.xml的XML文件用来存储数据,XML的结构下面会涉及到,你也可以下载我打包好的文件查看;

4.一个loading.gif图片,这个图片用于在将XML读取出来的等待时间里面显示在空白html文档中

正式开始

Step 1:首先让我们看看这个data.xml的简单结构,我这里演示的数据是"Saturn为您推荐的几本书",故为书籍信息,那么xml就包括书籍的名称,缩略图和书籍描述信息;

以下为XML文件代码:

<?xml version="1.0" encoding="utf-8" ?> 
<books> 
<book title="藏地密码" imageurl="images/Tibet_Code.jpg"> 
<description> 
这里是概况(3water.com) 
</description> 
</book> <book title="剑桥雅思6" imageurl="images/ielts.jpg"> 
<description> 
这里是概况(3water.com) 
</description> 
</book> 
<book title="Professional ASP.NET" imageurl="images/asp.jpg"> 
<description> 
这里是概况(3water.com) 
</description> 
</book> 
</books>

其次,让我们看看加载在空白HTML文档里面的JavaScript代码:

$(document).ready(function() 
{ 
$.get('myData.xml', function(d){ 
$('body').append('<h1> Saturn给你推荐几本书: </h1>'); 
$('body').append('<dl />'); $(d).find('book').each(function(){ 
var $book = $(this); 
var title = $book.attr("title"); 
var description = $book.find('description').text(); 
var imageurl = $book.attr('imageurl'); 
var html = '<dt> <img class="bookImage" alt="" src="' + imageurl + '" /> </dt>'; 
html += '<dd> <span class="loadingPic" alt="Loading" />'; 
html += '<p class="title">' + title + '</p>'; 
html += '<p> ' + description + '</p>' ; 
html += '</dd>'; 
$('dl').append($(html)); 
$('.loadingPic').fadeOut(2000); 
}); 
}); 
});

Step 2:这里,我只讲下JavaScript代码原理与运行流程,不过分讨论语法,如果你对语法有任何疑问,请给我留言或者查看JQuery相关文档。

行1:当HTML文档准备完毕之后(即html和JavaScript都下载完毕),会自动触发JQuery的 $(document).ready方法及里面的过程。显然,这里首先执行的是$.get方法。
行3:$.get的第一个参数是XML文件的相对路径(注意路径要填写正确,这里我们把XML和网页文件放在同一文件夹)。第二个参数是一个Callback函数,即回调函数。就是说通过get方法来请求这个XML文件的内容,然后通过这个callback回调函数来操作里面的数据。而callback的参数d表示从XML回调过来的所有数据,有了这个参数d,我们就好进行下面的内容了。
行4:通过JavaScript在文档的BODY中动态添加一个标签<h1>,这个是页面的总标题,无关紧要;
行5:同样在BODY中动态添加一个标签<dl>,用来作为包含循环下面的内容容器。(行20会用到)
行7:这一行很重要,因为我们已经说过,回调函数的参数d表示从XML回调的所有数据,现在我们就需要对这些数据进行处理(筛选)和格式化;请注意:这里通过搜寻book标签(tag),然后循环执行each后面的函数,直到xml里面数据的条目完全循环完毕;(有点像PHP里面的foreach函数的功能)
行9:$(this)实际上就创建一个对象,目的是将d的当前一条书籍信息对象实例化,方便进行操作,这就是$book;
行10--行12:分别获取当前对象$book的书籍名称,描述和缩略图;(注意取属性值和取节点值的语法不同)
行14-行18:格式化书籍信息,以便输出;
行20:将格式化后的信息以HTML输出方式输出到文档中。
行22:为了告诉用户我们当前的信息正在从XML中读取,2000毫秒(2秒)后,图片逐渐消失。

Step 3:至此,大功告成。欢迎大家给我留言,共同讨论JQuery的开发和你所碰到的问题,请不吝赐教。另外,请将下载后的文件夹放在WEB环境下运行(IIS或虚拟主机),请不要直接点开运行。

代码打包下载

Javascript 相关文章推荐
JavaScript 入门·JavaScript 具有全范围的运算符
Oct 01 Javascript
IE6下CSS图片缓存问题解决方法
Dec 09 Javascript
node.js中的buffer.length方法使用说明
Dec 14 Javascript
AngularJs Javascript MVC 框架
Jun 20 Javascript
vue.js初学入门教程(2)
Nov 07 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
Vue 过渡实现轮播图效果
Mar 27 Javascript
微信小程序如何获知用户运行小程序的场景教程
May 17 Javascript
10个经典的网页鼠标特效代码
Jan 09 Javascript
JavaScript中set与get方法用法示例
Aug 15 Javascript
使用Node.js写一个代码生成器的方法步骤
May 10 Javascript
layui使用表格渲染获取行数据的例子
Sep 13 Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
Dec 15 #Javascript
jQuery 渐变下拉菜单
Dec 15 #Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
Dec 15 #Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
Dec 15 #Javascript
查询绑定数据岛的表格中的文本并修改显示方式的js代码
Dec 15 #Javascript
jquery自动完成插件(autocomplete)应用之PHP版
Dec 15 #Javascript
Javascript attachEvent传递参数的办法
Dec 14 #Javascript
You might like
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
php实现json编码的方法
2015/07/30 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
Array.prototype.slice 使用扩展
2010/06/09 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
jQuery实现预加载图片的方法
2015/03/17 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python实现狄克斯特拉算法
2019/01/17 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
Python各种扩展名区别点整理
2020/02/27 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
Linux内核产生并发的原因
2012/07/13 面试题
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
环保志愿者活动方案
2014/08/14 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android