在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 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
解析arp病毒背后利用的Javascript技术附解密方法
Aug 06 Javascript
jQuery 技巧小结
Apr 02 Javascript
js 赋值包含单引号双引号问题的解决方法
Feb 26 Javascript
jqeury-easyui-layout问题解决方法
Mar 24 Javascript
javascript将异步校验表单改写为同步表单
Jan 27 Javascript
js鼠标滑过图片震动特效的方法
Feb 17 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
Nov 23 Javascript
jquery操作ID带有变量的节点实例
Dec 07 Javascript
关于Angular2 + node接口调试的解决方案
May 28 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
Aug 22 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
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
1.PHP简介
2006/10/09 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
php 魔术方法详解
2014/11/11 PHP
php微信支付之APP支付方法
2015/03/04 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
jquery 简单的进度条实现代码
2010/03/11 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
Python中特殊函数集锦
2015/07/27 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
PyQt5实现简易电子词典
2019/06/25 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
python自动生成证件号的方法示例
2021/01/14 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
大学四年学习的自我评价分享
2013/12/09 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
街道社区活动报告
2015/02/05 职场文书
督导岗位职责范本
2015/04/10 职场文书
人力资源部工作计划
2019/05/14 职场文书