在jQuery中处理XML数据的大致方法
XML全称为可扩展标记语言,其文件结构与HTML类似,但是区别也很明显,HTML只能使用已经定义的标签,如title,body,span等,标签种类是有限的,但是XML除了可以使用HTML的所有标签,还可以自己随意定制标签,如person,name,sex,age等,而且XML中的标签属性名称,也可以随意定制。另外二者用途方面也有明显区别,HTML主要用来展示数据,XML则侧重于数据的存储和传输。例如下面这个简单的XML文档用以存储员工信息:
<员工> <姓名>麻花疼</姓名> <性别>男</性别> <年龄>40</年龄> <职位>疼逊CEO</职位> </员工>
下面本文简单介绍如何使用jQuery载入一个XML文件并从中获取自己想要的数据。
准备XML文档及测试数据
假设我们现在要构建一个包含人员信息的XML文档,该XML文档要能反映其姓名、所在公司、公司简介、公司产品简介几个信息,那么我们可以把XML设计成如下样式:
<?xmlversion="1.0"encoding="utf-8"?> <Persons> <PersonFullName="BillGates"> <Corporation>Microsoft</Corporation> <Description>Thelargestsoftwarecompany</Description> <Products>WindowsseriesOS,SQLServerDatabase,XBox360...</Products> </Person> <PersonFullName="Jobs"> <Corporation>Apple</Corporation> <Description>Thefamoussoftwarecompany</Description> <Products>Macintosh,iPhone,iPod,iPad...</Products> </Person> <PersonFullName="LarryPage"> <Corporation>Google</Corporation> <Description>thelargestsearchengine</Description> <Products>Googlesearch,GoogleAdsense,Gmail...</Products> </Person> </Persons>
简单分析一下这个XML文件,其中第一行<?xmlversion="1.0"encoding="utf-8"?>是声明此文档为XML文档,且文本编码为utf-8。第二行及最后一行Persons为文档的根元素,然后每个Person元素即表示每个人,姓名存储在Person元素的FullName属性中,Corporation元素用来存储所在公司名称,Description元素用来存储公司简介,Products元素用来存储公司产品简介。至此,该文档里面包含了比尔·盖茨、乔布斯、拉里·佩奇三位IT界大佬的信息。
用jQuery解析此XML文档
首先要用$.get()方法载入XML文件,然后用find()方法找到所有Person元素,再用each()方法进行遍历,代码如下:
<scripttype="text/javascript"> jQuery(document).ready(function(){ /*先用$.get方法载入XML文件*/ $.get("EmployeesInformation.xml",function(xmlData){ /*我们要讲得到的数据放入一个表格里面,这里定义一个表格字符窜*/ varhtmlData="<tableborder='1'>"; /*找到Person元素,然后用each方法进行遍历*/ $(xmlData).find("Person").each(function(){ varPerson=$(this);/*将当前元素复制给Person*/ varFullName=Person.attr("FullName");/*获取Person的FullName属性*/ varCorporation=Person.find("Corporation").text();/*获取Person中子元素Corporation的值*/ varDescription=Person.find("Description").text();/*获取Person中子元素Description的值*/ varProducts=Person.find("Products").text();/*获取Person中子元素Products的值*/ /*将得到的数据,放到表格的一行中*/ htmlData+="<tr>"; htmlData+="<td>"+FullName+"</td>"; htmlData+="<td>"+Corporation+"</td>"; htmlData+="<td>"+Description+"</td>"; htmlData+="<td>"+Products+"</td>"; htmlData+="</tr>"; }); //完成表格字符窜 htmlData+="</table>"; //将表格放到body中 $("body").append(htmlData); }); }); </script>
简单解释一下这段代码,由于此XML文档相对简单,所以这段代码也比较简短,代码中$.get()方法的第一个参数为XML文件地址,第二个参数是一个回调函数,回调函数中参数xmlData即为XML文件中的数据。在此示例中,我们打算XML中的数据以表格的形式显示在HTML中,所以先构建一个表格字符串htmlData先。
紧接着,用find()方法,找到所有名为Person的元素,因为每个Person元素即表示一个人,然后再用each()方法进行遍历,把遍历到的元素赋个一个变量Person。用Person.attr()方法去除元素的FullName属性,也就是人员的姓名,再用find()方法找到其子元素Corporation,Description和Products并返回它们的文本内容,并用tr和td标签将它们包装在表格的一个行里面。最后完成表格字符串,并将表格添加到body标签中。