从XML生成可与Ajax共同使用JSON.docVIP

  • 5
  • 0
  • 约3.18万字
  • 约 12页
  • 2017-08-23 发布于河南
  • 举报
从XML生成可与Ajax共同使用JSON

从 XML 生成可与 Ajax 共同使用的 JSON 时下,非常流行使用 JavaScript 代码为数据驱动的 Web 应用程序添加互动性。若能将数据编码成 JavaScript Object Notation(JSON)的格式,您就可以更轻松地通过 JavaScript 语言使用它。通过本文,发掘使用 XSLT V2 从 XML 数据生成 JSON 的几种不同方法。 几年前,许多开发人员很看好 XML、XSLT、Extensible HTML (XHTML)和其他一些基于标记的语言。现在,Asynchronous JavaScript and XML(AJAX)成了新的热点,人们又将目光转向了使用 JavaScript 代码的数据驱动的富 Internet 应用程序。但是开发人员是否已经消除了 XML 和这一新技术之间的鸿沟呢? 当然,您可以在 Web 客户机中使用 XML 解析器来读取数据,但这种做法会带来两个问题。第一,出于安全方面的原因,XML 数据只能从与此页面相同的那个域中读取。这虽然不是什么大的限制因素,但它的确会引起部署方面的问题,还会阻碍 DHTML 小部件的创建。第二,读取和解析 XML 会非常慢。 另一种做法是让服务器执行 XML 的解析工作,方法是设置服务器,使之向浏览器发送以 JavaScript 代码或时下流行的 JavaScript Object Notation(JSON)编码的数据。本文将展示如下三种使用 XSLT V2 语言和 Saxon XSLT V2 处理器从 XML 数据生成 JSON 的技巧: 简单编码 通过函数调用加载数据 编码对象 JSON 简介 要学习如何将数据编码成 JSON(它只是 JavaScript 的一个子集),最好的方法是从数据开始。清单 1 显示了书籍列表的一个示例 XML 数据集。 清单 1. 基本的图形化图书馆 ?xml version=1.0 encoding=UTF-8? books book id=1 titleCode Generation in Action/title authorfirstJack/firstlastHerrington/last/author publisherManning/publisher /book book id=2 titlePHP Hacks/title authorfirstJack/firstlastHerrington/last/author publisherOReilly/publisher /book book id=3 titlePodcasting Hacks/title authorfirstJack/firstlastHerrington/last/author publisherOReilly/publisher /book /books 这个数据集很简单,只包含三本书,每本书都具有惟一的 ID、书名、作者姓名及出版商的名字。(没错,我只选择了我自己的书作为数据集,但能怨我吗?这些书实在是不可多得的节日和生日礼物。) 清单 2 显示了这些数据在 JSON 中的效果。 清单 2. JSON 中的示例数据集 [ { id: 1, title: Code Generation in Action, first: Jack, last: Herrington, publisher: Manning }, ... ] 方括号 ([]) 表明这是一个数组。大括号 ({}) 则表明这是一个散列表,该散列表由一组名称和值对组成。在本例中,我创建了一个散列表的数组 —— 用来存储这类结构式数据的一种常见方法。 另外一点值得注意的是字符串是通过单引号或双引号被编码的。所以,如果我想用单引号编码 OReilly,我就必须使用反斜杠对它进行转义:O\Reilly。 这让我编写的这个 XSLT 样式表更为有趣了一些。 我并未在本例中放上任何日期,但您也可以通过如下两种方法来编码日期。第一种方法是将日期作为字符串,该字符串必须在后面被解析。第二种方法是将日期作为一个对象,比如: publishdate: new Date( 2006, 6, 16, 17, 45, 0 ) 这段代码将 publishdate 的值设置为6/16/2006 5:45:00 p.m.。 简单编码 接下来我将陆续介绍 JSON 编码的几种技巧。第一种也是其中最简单的一种,此样式表如 清单 3 所示。 清单

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档