在请求和响应中使用 XML
级别: 中级Brett McLaughlin (brett@oreilly.com), 作家,编辑, O'Reilly and Associates
2006 年 10 月 23 日
偶尔使用 Ajax 的开发人员也会注意到 Ajax 中的 x 并意识到它代表 XML。XML 是编程中最常用的数据格式之一,对于异步应用程序中的服务器响应能够带来切实的好处。在本文中,您将看到服务器如何在请求响应中发送 XML。<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->现在如果不使用 XML 就不能进行任何有意义的编程。无论考虑转向 XHTML 的网页设计人员、使用 JavaScript 的 Web 程序员、使用部署描述文件和数据绑定的服务器端程序员,还是研究基于 XML 的数据库的后端开发人员,都在使用这种可扩展标记语言。因此,XML 被认为是 Ajax 底层的核心技术之一就不足为奇了。
但是,这种观点反映到 Ajax 应用程序就表现在其核心对象所选的名称 —— XMLHttpRequest,这个名称不是很好,因为它并没有反映技术上的实际情况。换句话说,多数人之所以认为 XML 是 Ajax 的核心组成部分,仅仅是因为他们想当然地以为 XMLHttpRequest 对象在任何时候都使用 XML。但实情并非如此,本文第一部分给出了原因。实际上,您将看到在多数 Ajax 应用程序中 XML 很少出现。
XML 确实有应用在 Ajax 中,而且 XMLHttpRequest 也支持这种用法。也确实没有什么能阻挡您向服务器发送 XML。在本系列前面的文章中,我们使用普通文本和名/值参数发送数据,但 XML 也是一种可行的格式。本文将介绍如何来这样做。但最重要的是,我将讨论为何可以使用 XML 作为请求格式,以及为何在多数情况下不应该使用它。
使用 XML(真正)
到目前为止,我说的只是 Ajax 在哪些地方不使用 XML。但 Ajax 中的 x 和 XMLHttpRequest 中的 XML 仍然有其实际意义,在 Web 应用程序中使用 XML 有多种选择。这一节将讨论基本的选择,剩下的部分再深入探讨细节问题。
从客户机到服务器的 XML
我们来看看将 XML 作为从客户机向服务器发送数据的格式。我们首先讨论技术上的实现,然后花些时间分析什么时候适合什么时候不适合使用它。
发送 XML:好还是不好?
在结束 XML 响应的 XML 请求(以及本文)之前,我们花点时间讨论一下在请求中使用 XML 的感受。前面已经提到,就传输而言 XML 完全不是最快的方式,但是还有更多因素要考虑。
结束语
通过本文,您现在可能已经开始对 Ajax 中的 XML 有一些更深的理解了。您知道 Ajax 应用程序不一定要使用 XML,XML 也不是数据传输中的什么法宝。还知道从网页向服务器发送 XML 不是多么难的事情。更重要的是,您知道为了确保服务器能够处理和响应请求需要做什么:必须保证服务器脚本接受 XML,而且能够识别用于发送数据的格式。
您还应该非常清楚 XML 对于请求来说并不一定是很好的数据格式。在以后的文章中,您将看到 XML 在某些情况下是有利的,但在多数请求中,它只会降低速度和增加复杂性。因此虽然通常我都会建议您马上应用在文章中学到的内容,但是对本文来说,我建议您在应用这里学到的知识时最好三思而后行。XML 请求在 Ajax 应用程序中有自己的价值,但是并不像您所想象的那么大。
在下一期文章中,我们将讨论服务器如何使用 XML 做出响应,以及 Web 应用程序如何处理这些响应。令人高兴的是,服务器能够将 XML 发送回 Web 应用程序,这样做的理由比较充分,因此那篇文章中的技术细节更实用,目前您只需要知道 XML 为何并非一定是最佳选择 —— 至少对发送请求而言。您可以尝试使用 XML 作为请求数据格式实现某些 Web 应用程序,然后再换回普通文本,看看哪种办法更快更简单。下一期文章再见。
参考资料
学习
[*]您可以参阅本文在 developerWorks 全球网站上的 英文原文。
[*]掌握 Ajax 系列:阅读本系列以前的文章。
[*]XML 文档库:developerWorks 中国网站 XML 专区提供了各种技术文章和技巧、教程、标准和 IBM 红皮书。
[*]xml.com:如果还不熟悉 XML 编程,这是最容易理解的关于 XML 方方面面的在线资源。
[*]“面向 Java 开发人员的 Ajax:构建动态的 Java 应用程序”(Philip McCarthy,developerWorks,2006 年 10 月):从 Java 的角度看一看服务器端的 Ajax。
[*]“面向 Java 开发人员的 Ajax:Ajax 的 Java 对象序列化”(Philip McCarthy,developerWorks,2005 年 10 月):从 Java 的角度观察如何通过网络发送对象并与 Ajax 交互。
[*]“使用 AJAX 调用 SOAP Web 服务,第 1 部分:构建 Web 服务客户机”(James Snell,developerWorks,2006 年 1 月):深入研究这篇较为高级的文章,它介绍了将 Ajax 与现有基于 SOAP 的 Web 服务相集成的有关内容,说明了如何使用 Ajax 设计模式实现一个基于 Web 浏览器的 SOAP Web 服务。
[*]万维网联盟的 DOM 主页:请访问 DOM 相关内容的起点。
[*]The DOM Level 3 Core Specification:定义了核心文档对象模型,从可用的类型和属性到 DOM 在不同语言中的用法。
[*]ECMAScript language bindings for DOM:如果您是一位 JavaScript 程序员,并希望在代码中使用 DOM,可能会对 Level 3 Document Object Model Core 定义的这个附录感兴趣。
[*]“Ajax: A new approach to Web applications”(Jesse James Garrett,Adaptive Path,2005 年 2 月):阅读有关 Ajax 起源的这篇文章,它是每一位 Ajax 开发人员的必读之物。
[*]developerWorks 技术活动 和 网络广播:随时关注这些为技术开发人员准备的软件研讨会和网络广播。
[*]developerWorks 中国网站 Web development 专区:通过这写文章、教程和论坛等提高您的 Web 开发技能。
获得产品和技术
[*]Head Rush Ajax, Brett McLaughlin (O'Reilly Media, 2006):将本文所述概念引入您的脑海,Head First 风格。
[*]Java and XML, Second Edition(Brett McLaughlin,O'Reilly Media, Inc., 2001):看看作者关于 XHTML 和 XML 转换的讨论。
[*]JavaScript: The Definitive Guide(David Flanagan,O'Reilly Media, Inc.,2001):深该书深入讨论了 JavaScript 和动态 Web 页面的使用。下一版将增加关于 Ajax 的两章。
[*]Head First HTML with CSS & XHTML(Elizabeth 和 Eric Freeman, O'Reilly Media, Inc., 2005):进一步了解 HTML 和 XHTML 标准化以及如何将 CSS 应用于 HTML。
[*]IBM 试用版软件:用这些软件开发您的下一个项目,可直接从 developerWorks 下载。
讨论
[*]通过参与developerWorks blog加入 developerWorks 社区。
[*]developerWorks 上的 Ajax 论坛:通过这个 Web 开发人员论坛学习、讨论和分享学到的知识或者使用 AJAX 的经验。
关于作者
http://www.ibm.com/i/c.gif http://www.ibm.com/developerworks/i/p-brett.jpg
http://www.ibm.com/i/c.gif Brett McLaughlin 从 Logo 时代就开始使用计算机。(还记得那个小三角吗?)近年来,他已经成为 Java 和 XML 社区最著名的作者和程序员之一。他曾经在 Nextel Communications 实现过复杂的企业系统,在 Lutris Technologies 编写过应用服务器,最近在 O'Reilly Media, Inc. 继续撰写和编辑这方面的图书。Brett 即将出版的新书 Head Rush Ajax,和畅销书作者 Eric 与 Beth Freeman 一起为 Ajax 带来了获奖的革命性 Head First 方法。最近的著作 Java 1.5 Tiger: A Developer's Notebook 是关于 Java 技术最新版本的第一本书,经典的 Java and XML 仍然是在 Java 语言中使用 XML 技术的权威著作。
页:
[1]