**Java XML解析技术**
**XML概述**
随着软件程序从独立的单机应用程序演化为分布式的企业系统,开发人员开始要面对一系列新的挑战。应用程序不再仅仅运行于一台机器上,而是会运行于多台机器上,并且这些机器的硬件架构、操作系统还可能不一样。这样,开发人员的挑战就是要定义一种通用的机制,使得采用不同编程语言编写的、运行于不同操作系统平台上的应用程序之间可以相互通讯。
假如所有的应用程序都是用Java编写的,我们的工作就会变得很简单。我们知道,Java是被设计用在统一的虚拟机上的,而该虚拟机的职责就是把Java表示的数据转换成操作系统认识的数据。Java用4个字节表示整数,而有些编程语言却是用2个字节表示整数,那么我们如何解释丢失的2个字节呢?Windows和Unix操作系统对数据字节表示的底层解释是不同的:对于4个字节的整数的各个位数,这两种操作系统的解释互不相同,因此所产生的结果值是不同的。
在现实中,应用程序可能是用Java编写的,还有可能是用C#、VB、Delphi、C、C++等编程语言编写的。考虑直接与硬件对话的那一类应用程序:这类应用程序需要直接与底层操作系统交互,需要理解硬件所处的计算机架构。这只是一类无法使用Java的情况,另外一类情况是软件所运行的操作系统还没有开发Java虚拟机。
我们已经了解了一些我们所面临的挑战,现在我们继续想想,怎样在两个应用程序之间无二义性地传递数据呢?假设要传递带有值65的变量speed,那么我们就要尝试传输两个数据:值65,该值代表速度。前面已经提到过,不能把整型值当成一系列二进制位传递。那么,能不能把数据当作字符串(字符6后面跟着字符5)发送呢?不管操作系统及编程语言是什么,字符5总是一样的。
XML(可扩展标记语言,eXtended Markup Language)是当今出现的最重要的十大软件开发技术之一。它是一种允许Web应用程序开发人员创建自定义标记,以便更有效组织和传递内容的语言。在XML文档中,用户可以定义自己需要的标记,创造自己的标记语言,只要在定义标记时遵循XML规范即可。XML定义了一套元句法,这些符合规范的XML文档能够很容易地被应用程序统一解析。这样,数据的存储和传输就有章可循。
XML由于简洁高效,能够用纯文本的形式表现各种复杂的有层次的数据及其之间的相互关系,易于在各个平台上构造和解析,因此在数据交换、结构化数据存储与显示、内容呈现与显示格式分离等方面得到了广泛的应用。
**XML语法规则**
一个XML文档由两个部分组成:一个部分是序言,包括XML文档声明、注释、空白;另一个部分是文档元素,这两个部分是必须的。此外,我们还可以选择性地包含注释、处理指令和空白。
XML声明
XML文档声明由“<?xml”开始,以“?>”结束。这个声明的作用在于告诉XML处理程序:该文档是按照XML文档规范对数据进行组织的。
XML声明有版本号(version)、独立文档声明(standalone)和编码声明(encoding)三个属性。属性是由等号分开的名称-数值对,位于等号左边的是属性名,而其值位于等号的右边,并用双引号括起来。
版本声明指明文档所采用的XML版本号,必须排在第一位。目前1.0是唯一可用的版本。这个属性是XML文档声明必需的。
编码声明则指明该文档所使用的编码方式,是可选属性。XML默认的字符集是Unicode。Unicode是一种双字节字符,可以标识当今使用的大多数字符,包括汉字。UTF-8是Unicode的压缩版本,而UTF-16则是Unicode的双字节编码实现。如果文档不使用默认的Unicode编码方式,则必须为encoding属性指定一个编码方式。简体中文采用GB2312编码,繁体中文则采用BIG5编码。对于某些XML处理程序而言,GB2312有时候会出现中文乱码的情况,所以我们应该根据实际情况选择合适的编码方式:UTF-8、UTF-16、GB2312、BIG5或者ISO8859-1。
独立文档声明指明文档是否有外部的标记声明文件相配套使用,属性取值为“yes”或“no”。如果standalone的值为yes,代表所有的文档都在一个文件里完成。这个属性也是可选属性。
XML声明是大小写敏感的,不可以用“<? XML”或者其它形式。而且,XML声明必须在文档的最前面,之前不能出现任何的空白或者注释。
XML文档注释
XML文档注释以“<!--”开始,以“-->”结束。在XML文档被XML处理程序解析时,这些注释内容会全部被忽略不显示。当我们希望XML文档中的某些内容被解析器忽略时,可以使用注释的方式。
注释内容不能出现在XML声明之前,也不能放在任何标记当中。但是,可以包围和隐藏标记。
值得注意的是,在注释的内容中不要出现“--”或者“-”,因为容易混淆;不要把注释放在原有标记中间,
Java XML解析技术
最新推荐文章于 2024-06-29 12:06:41 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)