在jQuery中处理XML数据的大致方法


Posted in Javascript onAugust 14, 2015

XML 全称为 可扩展标记语言,其文件结构与 HTML 类似,但是区别也很明显,HTML 只能使用已经定义的标签,如 title, body, span 等,标签种类是有限的,但是 XML 除了可以使用 HTML 的所有标签,还可以自己随意定制标签,如 person, name, sex, age 等,而且 XML 中的标签属性名称,也可以随意定制。另外二者用途方面也有明显区别,HTML 主要用来展示数据,XML 则侧重于数据的存储和传输。例如下面这个简单的 XML 文档用以存储员工信息:

<员工>
 <姓名>麻花疼</姓名>
 <性别>男</性别>
 <年龄>40</年龄>
 <职位>疼逊CEO</职位>
</员工>

下面本文简单介绍如何使用 jQuery 载入一个 XML 文件并从中获取自己想要的数据。
准备 XML 文档及测试数据

假设我们现在要构建一个包含人员信息的 XML 文档,该 XML 文档要能反映其姓名、所在公司、公司简介、公司产品简介几个信息,那么我们可以把 XML 设计成如下样式:

<?xml version="1.0" encoding="utf-8" ?>
<Persons>
 <Person FullName="Bill Gates">
 <Corporation>Microsoft</Corporation>
 <Description>The largest software company</Description>
 <Products>Windows series OS, SQL Server Database, XBox 360...</Products>
 </Person>

 <Person FullName="Jobs">
 <Corporation>Apple</Corporation>
 <Description>The famous software company</Description>
 <Products>Macintosh, iPhone, iPod, iPad...</Products>
 </Person>

 <Person FullName="Larry Page">
 <Corporation>Google</Corporation>
 <Description>the largest search engine</Description>
 <Products>Google search, Google Adsense, Gmail...</Products>
 </Person>
</Persons>

简单分析一下这个 XML 文件,其中第一行 <?xml version="1.0" encoding="utf-8" ?> 是声明此文档为 XML 文档,且文本编码为 utf-8。第二行及最后一行 Persons 为文档的根元素,然后每个 Person 元素即表示每个人,姓名存储在 Person 元素的 FullName 属性中,Corporation 元素用来存储所在公司名称,Description 元素用来存储公司简介,Products 元素用来存储公司产品简介。至此,该文档里面包含了比尔·盖茨、乔布斯、拉里·佩奇三位 IT 界大佬的信息。
用 jQuery 解析此 XML 文档

首先要用$.get()方法载入 XML 文件,然后用find()方法找到所有 Person 元素,再用 each() 方法进行遍历,代码如下:

<script type="text/javascript">
jQuery(document).ready(function() {
 /* 先用 $.get 方法载入 XML 文件 */
 $.get("EmployeesInformation.xml", function(xmlData) {
 /* 我们要讲得到的数据放入一个表格里面,这里定义一个表格字符窜 */
 var htmlData = "<table border='1'>";

 /* 找到 Person 元素,然后用 each 方法进行遍历 */
 $(xmlData).find("Person").each(function() {
  var Person = $(this); /* 将当前元素复制给 Person */
  var FullName = Person.attr("FullName"); /* 获取 Person 的 FullName 属性 */
  var Corporation = Person.find("Corporation").text(); /* 获取 Person 中子元素 Corporation 的值 */
  var Description = Person.find("Description").text(); /* 获取 Person 中子元素 Description 的值 */
  var Products = 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 标签中。

Javascript 相关文章推荐
基于jquery的表头固定的若干方法
Jan 27 Javascript
JS中实现简单Formatter函数示例代码
Aug 19 Javascript
js实现格式化金额,字符,时间的方法
Feb 26 Javascript
浅谈javascript中的三种弹窗
Oct 21 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
JSON键值对序列化和反序列化解析
Jan 24 Javascript
JavaScript实现鼠标点击导航栏变色特效
Feb 08 Javascript
vue进行图片的预加载watch用法实例讲解
Feb 07 Javascript
JavaScript实现省市区三级联动
Feb 13 Javascript
JavaScript onclick事件使用方法详解
May 15 Javascript
jQuery实现视频展示效果
May 30 jQuery
在vue中使用Base64转码的案例
Aug 07 Javascript
JavaScript中var关键字的使用详解
Aug 14 #Javascript
JavaScript的jQuery库中ready方法的学习教程
Aug 14 #Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
Aug 14 #Javascript
JavaScript学习笔记之DOM基础 2.4
Aug 14 #Javascript
关于JavaScript的变量的数据类型的判断方法
Aug 14 #Javascript
js实现表单检测及表单提示的方法
Aug 14 #Javascript
JavaScript中的this关键字使用详解
Aug 14 #Javascript
You might like
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
Python实现购物车程序
2018/04/16 Python
Python partial函数原理及用法解析
2019/12/11 Python
Python中包的用法及安装
2020/02/11 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
零件设计自荐信范文
2013/11/27 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
一体化教学实施方案
2014/05/10 职场文书
学校督导评估方案
2014/06/10 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
2014年班组工作总结
2014/11/20 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
同意报考证明
2015/06/17 职场文书
小学六年级毕业感言
2015/07/30 职场文书
交通安全教育主题班会
2015/08/12 职场文书
六五普法学习心得体会
2016/01/21 职场文书