« [推荐]10个最有前景的JavaScript框架中秋节,你快乐吗? »

[JavaScript]教程实例:使用JQuery读取XML文件数据

2008年9月11日 8:09:39 发布:Saturn

速导读www.huyang8.com

今天向大家演示如何通过JQuery框架空白HTML文档加载从XML文件读取的数据。我们将会主要用到JQuery自带函数 $.get 。

备工作/www.huyang8.com

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

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

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

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

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

 

演示与下载:演示链接 完整实例下载链接 jquery-1.2.6.js独立下载

 

正式开始:/www.huyang8.com

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

 
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <books>  
  3.     <book title="藏地密码" imageurl="images/Tibet_Code.jpg">  
  4.         <description>  
  5.    这里是概况(www.huyang8.com)   
  6.         </description>  
  7.     </book>  
  8.   
  9.  <book title="剑桥雅思6" imageurl="images/ielts.jpg">  
  10.         <description>  
  11.    这里是概况(www.huyang8.com)    
  12.     </description>  
  13.     </book>  
  14.   
  15.     <book title="Professional ASP.NET" imageurl="images/asp.jpg">  
  16.         <description>  
  17.              这里是概况(www.huyang8.com)          
  18.          </description>  
  19.     </book>  
  20. </books>  

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

 
  1. $(document).ready(function()   
  2.      {   
  3.        $.get('myData.xml'function(d){   
  4.        $('body').append('<h1> Saturn给你推荐几本书: </h1>');   
  5.        $('body').append('<dl />');   
  6.   
  7.        $(d).find('book').each(function(){   
  8.   
  9.            var $book = $(this);    
  10.            var title = $book.attr("title");   
  11.            var description = $book.find('description').text();   
  12.            var imageurl = $book.attr('imageurl');   
  13.   
  14.            var html = '<dt> <img class="bookImage" alt="" src="' + imageurl + '" /> </dt>';   
  15.            html += '<dd> <span class="loadingPic" alt="Loading" />';   
  16.            html += '<p class="title">' + title + '</p>';   
  17.            html += '<p> ' + description + '</p>' ;   
  18.            html += '</dd>';   
  19.   
  20.            $('dl').append($(html));   
  21.               
  22.            $('.loadingPic').fadeOut(2000);   
  23.        });   
  24.    });   
  25. });  

 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或虚拟主机),请不要直接点开运行。

 

© 本站(http://www.huyang8.com/)采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.

发表评论:

  

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。