- 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 所示。
清单
您可能关注的文档
- HOTT 2010 MID市场分析报告.ppt
- 业务支撑网网络技术 Lesson 7 第二层交换机功能.ppt
- 东南大学信号与系统试题与答案.doc
- 东方有线数字家庭媒体终端技术规范书(软件与功能)-20100806修改稿.pdf
- 两个异双核稀土席夫碱配合物结构与荧光性质.pdf
- 两种方法实现表单页与数据库链接.pdf
- 两相流中气泡与液滴直径与其分布自动测量.pdf
- Linux开发入门.pdf
- 东南大学大学物理第一章.pdf
- 中南大学互换性与测量技术基础------第2章测量技术基础.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 宝城期货-原油2026年度报告-油海浮沉浪几重,掣鲸博弈破苍穹.pdf VIP
- 学堂在线 雨课堂 学堂云 临床中成药应用 综合考试答案.docx VIP
- 2018年1月13日山东济南事业单位考试《公共基础知识》(客观题部分).docx
- 食品生物技术-绪论.pptx VIP
- 2025年青岛职业技术学院单招笔试英语试题库含答案解析.docx VIP
- 中外建筑史7-近现代建筑.pptx VIP
- 2025年云南省中考生物真题(原卷).pdf
- 高中奥林匹克物理竞赛解题方法集.pdf VIP
- 梁小民西方经济学基础教程(第三版)第01章.ppt VIP
- 小学英语语法代词省公开课一等奖全国示范课微课金奖课件.pptx VIP
原创力文档

文档评论(0)