在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 相关文章推荐
用JavaScript和注册表脚本实现右键收藏Web页选中文本
Jan 28 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 Javascript
基于jQuery实现select下拉选择可输入附源码下载
Feb 03 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
May 05 Javascript
JavaScript中利用for循环遍历数组
Jan 15 Javascript
详细AngularJs4的图片剪裁组件的实例
Jul 12 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
Nov 02 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
Dec 25 Javascript
Vue-cli项目获取本地json文件数据的实例
Mar 07 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
Dec 12 Javascript
Vue数据绑定实例写法
Aug 06 Javascript
JS判断浏览器类型与操作系统的方法分析
Apr 30 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 购物车实例(申精)
2009/05/11 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
Bootstrap前端开发案例二
2016/06/17 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
javascript实现手动点赞效果
2019/04/09 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
Python正规则表达式学习指南
2016/08/02 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python的互斥锁与信号量详解
2019/09/12 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
基于python实现对文件进行切分行
2020/04/26 Python
python ETL工具 pyetl
2020/06/07 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
六一儿童节标语
2014/10/08 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
小学工作总结2015
2015/05/04 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书