首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

在这一章中,主要介绍可扩展标记语言XML,以及使用Java语言对XML文档进行操作的方法。读者将学习JDOM提供的jar包中的类和方法,来操作XML文档。

22.1  XML概述

可扩展标记语言(eXtensible Markup Language,简称XML),是由万维网协会(W3C)推出的新一代数据交换的标准。可以用于定义Web网页上的文档元素和商业文档,同时还可以用于复杂结构数据的表示和传输。

22.1.1  什么是XML

在学习XML之前,先来看一段简单的XML文档,如下代码22-1所示。

代码22-1  XML文档示例Demo.xml

<?xml version="1.0" encoding="gb2312"?>

<people>

    <person>

       <name>Wang Xiao Yue</name>

       <sex>male</sex>

       <age>24</age>

    </person>

    <person>

       <name>Xu Guang Yang</name>

       <sex>male</sex>

       <age>22</age>

    </person>      

</people>

这是一段很简单的XML文档,熟悉HTML文本标记语言的人可能会发现,XML的书写格式与HTML十分的相似,这是因为XML与HTML格式,都是通用标记语言(SGML)的下一代语言。写法虽然相似,但却有着重要的区别,大家可以理解为:HTML是描述文本结构和样式的,主要是文本的显示和控制;而XML是一个协议语言,是用来描述数据和数据结构的语言,是一种描述数据的标准,同时必须依赖高级语言才能实现其作用。

另外,在XML文档与HTML文档的写法规则上,也存在一些差别,包括以下几个方面。

*     XML文档中区分大小写,而HTML文档中并不区分大小写。

*     在HTML文档中若存在列表键时,可以省略结尾标记,而在XML文档中,所有标记都不能省略。

*     在XML文档中,属性值必须写在引号中,而在HTML文档中并没有严格规定。

文本框:  
图22-1  简单元素的结构示意图

一个XML文档都是由一些简单或复杂元素构成的,其结构与HTML基本相同,都包含元素、属性和值。XML元素都是用一个标签开始,并用一个相应的标签表示结束。复杂元素中可以包含子元素,而简单元素中就只能包含属性和内容。例如在代码22-1中,“people”是一个复杂元素的元素名,其开始标签为<people>,结束标签为</people>,该元素中包含2个person子元素,因此为复杂元素;同样,“person”元素也是复杂元素,而其中所包含的三个子元素均为简单元素,例如名为“name”的子元素,其开始标签为<name>,结束标签为</name>,该元素的内容为字符串“Wang Xiao Yue”。这个XML文件清晰的描述了两个人的数据信息,包括每个人的姓名、性别和年龄。如图22-1所示,是一个完整的简单元素的结构示意图。

22.1.2  XML的命名空间

文本框:  
图22-2  命名空间声明的一般形式


XML的命名空间是W3C推出的一个标准,是用来统一命名XML文档中的元素和属性的机制。使用命名空间,可以明确标识出XML文档中元素、属性以及其他标记,可以避免名称之间冲突所带来的问题。其实质就是在元素、属性名之前加上特定的命名空间,使它们都具有自己的领域,同时也方便程序员查询和提取数据。在XML文档中,一般都用URL来表示命名空间,但是一般的URL都比较长,放在元素和属性名称前难于书写,因此,会使用一个简短的字符来代替,并称之为命名空间的前缀。命名空间声明的一般形式如图22-2所示。

如代码22-2及22-3所示,分别使用显式和隐式方式来限定XML文档,同时也可以限定XML文档中的某一部分数据。

代码22-2  XML文档中显式使用命名空间示例Demo1.xml

<?xml version="1.0" encoding="gb2312"?>

<people xmls:mn1=”http://www.myjava1.com/”

          xmls:mn2=”http://www.myjava2.com/”

          xmls:mn3=”http://www.myjava3.com/”>

    <mn1:person>

       <mn3:name>Wang Xiao Yue</mn3:name>

       <sex>male</sex>

       <age>24</age>

    </mn1:person>

    <mn2:person>

       <name>Xu Guang Yang</name>

       <sex>male</sex>

       <age>22</age>

      </mn2:person>

</people>

代码22-3  XML文档中隐式使用命名空间示例Demo2.xml

<?xml version="1.0" encoding="gb2312"?>

<people>

    <person xmls="http://www.myjava1.com/">

       <name xmls="http://www.myjava3.com/">Wang Xiao Yue</mn3:name>

       <sex>male</sex>

       <age>24</age>

    </person>

    <person xmls=”http://www.myjava2.com/”>

       <name>Xu Guang Yang</name>

       <sex>male</sex>

       <age>22</age>

      </person>      

</people>

22.1.3  XML文档结构

一个XML文档的结构包括4个部分,分别如下。

*     XML的声明一般XML文档的第一行都是XML的声明,用来指出当前XML文档的版本号,有时也会指明文档编码。XML文档的声明如下所示:

<?xml version="1.0" ?>

这里的标签使用“<?”开始、“?>”结束,这在XML文档中称之为处理指令。

*     根元素  每个XML文件都包含有惟一的一个根元素,其包含了其他的子元素,例如在代码22-3中,“people”就是该XML文档的根元素。

*     元素  每一个XML文档中,其根元素中都包含了多个子元素,通常称之为XML文档中的元素。XML的元素由三个部分组成,包括起始标签、内容和结束标签。需要注意的是,起始标签与结束标签必须完全对应,同时要保证元素与元素间不能交迭。

*     属性  属性是依附于元素而存在的,任何一个元素都可以具有或不具有属性。元素若包含多个属性,则属性间用空格分隔,同时属性值需要使用单引号或双引号括起来。例如:

<book language="Chinese" page="500">Think In Java</book>

其中,book元素中包含两个属性,分别是language属性,其值为Chinese,以及page属性,其值为500。

代码22-4中,使用XML文档来表示一个书目的结构,同时使用到XML结构中最基本的4个部分。

代码22-4  使用XML文档来表示一个书目的结构Demo3.xml

<?xml version="1.0" encoding="gb2312"?>

<Library>

      <book>

            <Author>Zhang</Author>

            <Title>c++</Title>

            <PublicationDate edition="Trade" isbn="123456">09/2002</ PublicationDate >

            <Publisher>publisher1</ Publisher >

            <Subject>Computer Programming</Subject>

  </book>

      <book>

            <Author>Wang</Author>

            <Title>Java</Title>

            <PublicationDate edition="Trade" isbn="654321">07/2003</ PublicationDate >

            <Publisher> publisher2</ Publisher >

            <Subject>Computer Programming</Subject>

  </book>

</Library>

代码22-4中,使用XML文件表示的书目结构,其对应的树型结构如图22-3所示。

图22-3  XML文件对应的树型结构图

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论