`

XML 和 Java 技术: XML 究竟有哪些优势?

阅读更多

习惯于 XML

XML 不是什么新技术,大多数人都很好地掌握了其运作原理及其使用方法。但是,大家对 XML 的“杀手应用” —— 证明其创建必要的数据格式的最终用法。当您查看本文中它的一些最常见的用法时,您会很快发现,在大量的各种应用程序中,即使是专家对于是否可使用 XML 也莫衷一是。

XML 配置数据

XML 的最早的用法之一,并且仍然是最流行的用法之一,就是将其用作一种数据格式存储配置数据。几乎是 XML 一流行,编程人员就开始用它来取代他们专有的配置文件。属性文件、带名称 —— 值对的文本文件、逗号分隔值、专有数据格式 —— 所有这些都被丢弃以符合 XML 文档,包括标记、元素、属性和原文数据。

一种冗长的数据格式

这种 XML 应用程序的最明显的问题是,根据定义,XML 是一种很冗长的数据格式。换句话说,用 XML 表达一件事情会占用大量空间。例如,以下是一个简单的名称 —— 值对文件片段:

firstName=Brett
lastName=McLaughlin
email=brett@newInstance.com

将其与 XML 编写的本质相同的数据进行比较:

<?xml version="1.0"?>
<config-data>
 <firstName>Brett</firstName>
 <lastName>McLaughlin</lastName>
 <email>brett@newInstance.com</email>
</config-data>
为了 XML 的“方便”引入了大量额外的字符。这就意味着为选择使用 XML 技术牺牲了处理速度(读取较少的字符自然花费较少的时间)。

XML 处理 API

与其他文本格式相比,XML 除了通常要使用额外的字符来表示数据以外,您还需要使用一些软件来处理和读取 XML。虽然可以编写 XML 解析器,但您几乎肯定希望使用各种平台上可用的许多 XML 解析器中的一种。因此您将可能需要向软件资源中添加一到两个库,然后学习使用那些 API。

虽然学习新的 API 没什么坏处,但应意识到,您可能要使用自己编写的新代码替代读入现有原文配置数据的工作代码,使用必须使其在应用程序中可用的附加的库。换句话说,您需要在编译时和运行时使用新代码和附加的依赖项替代工作代码(假定您使用的是编译过的语言,但您应该明白其中的含义)。

灵活性的代价

问题然后就集中在了代价与价值的对比。使用 XML 配置数据的代价是相当高的;我已提到了冗余性和资源需求,但是还有很多其他缺点。主要的优点 —— 假定您意识到会用 XML 并不算什么优点 —— 是灵活性。如果您已经在使用 XML,或拥有可能使用多种语言的多个应用程序,所有这些程序共享配置数据,则 XML 可能是一种非常可行的配置数据的策略。

XML 传输数据

除配置数据外,使用 XML 来在应用程序的组件和层之间 传输数据也日益流行。在此模式中,应用程序的不同部分使用 XML“语言”进行通信。虽然这比使用 XML 配置数据在技术上更具挑战性,但几乎同样流行,并且这也成为了如 SOAP、数据绑定和 Web 服务等技术的基础。

应用程序内数据传输

XML 最常见的用法之一是:作为一种数据格式在同一应用程序的不同部分之间传输信息。这实现起来很容易,因为是由同样的程序员或程序员团队控制发送和接收数据的结束。不幸的是,这也几乎肯定是最 的 XML 传输数据的用法。

当您在同一应用程序中发送和接收数据时,增加了同样的系统开销,如配置应用程序的数据部分所讨论的:冗余性、更大的文件和对 XML 解析器库(最低水平的库)的需求。而您实际上从使用 XML 中的获益远不及此。在大多数情况下,一个好得多的解决方案是:将序列化的数据或对象原型发送至您所使用的编程语言。这样处理起来更快,因为传输数据占用的带宽更少而且在接收端解码更加容易。

应用程序间数据传输

XML 在此常规领域中的一个更好的用法是:使用 XML 作为数据传输格式在应用程序间传输数据。应用程序中有一个组件可将数据发送至业务伙伴应用程序中的另一个组件。而数据被编码为 XML 格式。

这样做有一些实实在在的优点,因为您无需知道另一个应用程序的编程语言以及数据将如何使用的相关信息。反过来时也是如此;如果要接收数据,您几乎也无需了解发送数据的应用程序的信息。在这种情况下,XML 的冗余性缺点就不如所获得的灵活性那么重要,况且其只需将数据编码为 XML 数据格式而不是要遵循其他公司的编程规范或选择其他技术。

主题变更:Web 服务

Web 服务、SOAP、WSDL 以及当前正在热议的各种其他专门术语证明了其存在的价值。但是,各种可用的 Web 服务实际上只是应用程序间数据传输的子集。通过某个其他公司或技术提供商提供的组件,您得以在应用程序间发送和接收数据。

惟一实质的区别在于 Web 服务通常要求 您使用 XML。因此问题的实质在于涉及 Web 服务时不是您想不想使用 XML;而是您到底要不要使用 Web 服务。而那就变成了另外一个大得多的问题:权衡使用 Web 服务功能的价值与处理提供程序、提供程序运行速度(与 XML 有关,可能也受带宽、等待时间、特定提供程序以及一些其他因素的影响)和公司声望的代价之间孰轻孰重。换句话说,XML 成为了一个可以忽略的因素,而不是一个控制因素。


结束语

虽然大多数文章为您展示特定问题的具体解决方案,而这篇文章旨在引导您进行思考。在大多数可能的 XML 应用程序中,没有简单的“正确”答案。有时 XML 似乎比其他备用程序好,而有时又几乎肯定 是这样,但在许多情况下,它只是诸多选择之一。您的任务是仔细思考文中详细介绍的常规应用程序,然后试着为您在自己的业务和项目中遇到的特定问题设计一些应用程序。

分享到:
评论

相关推荐

    JAVA核心技术

    3.以下所述主要是JAVA,J2EE方面的模式和框架:??常见的设计模式有什么???首先,你要了解的是GOF的《设计模式--可复用面向对象软件的基础》一书(这个可以说是程序员必备的了),注意:GOF不是一个人,而是指四...

    xml和java技术与实例详解

    xml和java技术与实例详解是一本很好的学习JAVA的资料,内含有具体的实例,并且每个实例都有完整的代码,可以让你在调试实例中学习这门全球应用最广泛语言和技术,另外一个好处就是还可以提高自己的专业英语能力,有助于你...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点是需要肯定的:  第一:XML肯定是未来的...

    论文研究-基于XML实现Java内容仓库和关系型数据库的双向映射.pdf

    提出了Java内容仓库和关系型数据库之间异构信息的双向映射机制的概念,利用XML作为Java内容仓库和关系型数据库的中间桥梁,充分发挥了Java内容仓库对大量文档信息的操作和数据库对关系数据信息操作之间的强大优势,...

    XML高级编程

    本书的覆盖范围本书解释和演示了设计、使用、显示XML文档所必需的技术。首先也是最重要的,本书覆盖了万维网协会(W3C)整理编撰的XML的全部基础内容。W3C是以正统方式发明XML的标准主体并在不断开发XML的规范。虽然...

    Android读写XML.docx

    举例来说,Java 的 Simple API for XML (SAX) 和 Document Object Model (DOM) 在 Android 上都是可用的,这些 API 多年以来一直都是 Java 技术的一部分,较新的 Streaming API for XML (StAX) 在 Android 中并不...

    java面试题

    答:单例模式是一种比较常见的设计模式,带给我们以下好处: 1:控制资源的使用 2:控制实例的产生数量 3:让多个不相关的两个线程或进程之间实现通信 为什么要用spring? 答:1、主要将各个框架有效的联系起来...

    J2EE中XML配置文件的读取处理

    使用XML作为Java的配置文件有很多好处,从Tomcat的安装配置文件和J2ee的配置文件中,我们已经看到XML的普遍应用,让我们也跟随流行趋势用XML武装起来。有好几种XML解析器:主要有DOM和SAX,在apache的XML项目组中,...

    Java 处理 XML 的三种主流技术及介绍

    本文作者对于 Java 处理 XML 的几种主流技术进行一些总结和介绍,希望帮助那些有不同需求的开发人员对于 XML 处理技术的作出优的选择。  初,XML 语言仅仅是意图用来作为 HTML 语言的替代品而出现的,但是随着该...

    基于Java的XML解析与反射设计模式.doc

    xstream可以完美转换xml,与以往的解析xml工具dom相比,xstream是一个易用的、开源 的库,使用起来简单、小巧,容易理解,可以轻易的将java对象和xml文档相互转换,而 且可以修改某个特定的属性和节点名称。...

    如何配置Java API for XML

    XML使数据可以移植。Java平台使代码可以移植。Java API for XML 允许轻松地使用XML。如果把这些因素融为一体,你将获得一...实际上,如果配置Java API for XML,你几乎不使用或不直接使用XML,也能够获得XML的好处。

    xml与反射.txt

    反射的步骤有哪些? 第一:获取类加载器:ClassLoader loader=Thread.currentThread().getContextClassLoader();//获取当 前线程的上下文类加载器 第二:通过类加载器获取类 Class clazz=loader.loadClass(...

    java面试宝典

    162、Ajax主要包含了哪些技术? 38 163、主要的Ajax框架都有什么? 38 164、介绍一下XMLHttpRequest对象 38 165、AJAX应用和传统Web应用有什么不同? 38 166、如何用JQuery进行表单验证? 39 167、Prototype如何实现...

    java8集合源码-Java:Java

    Java中的transient和volatile变量有什么区别? 提及同步块的用途 基于散列的集合中加载因子的默认大小是多少? 编写代码使集合只读? 区分谓词和函数? Java8中的Nashorn是什么? JVM 分配了多少种内存区域? 定义为...

    JAVA.WEB服务.构建与运行

     《Java Web 服务:构建与运行(影印版)》提供了对Java的API的一个全面介绍,包括针对XML Web服务的JAX-WS和针对RESTful Web服务的JAX-RS。《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例...

    android 用java动态设置布局(增添删除修改布局)

    XML对开发者来说十分的方便,不仅使用起来简单,而且能够及时调试,修改界面之后马上能看到效果,Java不具有这个优势。但是java却可以动态对布局进行操作,这是xml所做不到的。笔者认为,新手索要掌握的java动态设置...

    Java面试宝典-经典

    1、xml有哪些解析技术?区别是什么? 113 2、你在项目中用到了xml技术的哪些方面?如何实现的? 114 3、用jdom解析xml文件时如何解决中文问题?如何解析? 114 4、编程用JAVA解析XML的方式. 115 5、XML文档定义有几种形式...

Global site tag (gtag.js) - Google Analytics