设为首页
收藏本站
切换到窄版
登录
立即注册
找回密码
搜索
搜索
本版
帖子
用户
快捷导航
论坛
BBS
C语言
C++
NET
JAVA
PHP
易语言
数据库
IE盒子
»
论坛
›
IE盒子
›
JAVA
›
Java Web开发实战—XML—初识XML、XML语法规范 ...
返回列表
发帖
查看:
96
|
回复:
1
Java Web开发实战—XML—初识XML、XML语法规范
[复制链接]
吴晓
吴晓
当前离线
积分
6
2
主题
2
帖子
6
积分
新手上路
新手上路, 积分 6, 距离下一级还需 44 积分
新手上路, 积分 6, 距离下一级还需 44 积分
积分
6
发消息
发表于 2022-12-21 16:54:45
|
显示全部楼层
|
阅读模式
初识XML
XML简介
在现实世界中,人们有很多方式去描述事物以及事物之间的关系。例如,大家想知道学习Java编程最佳的路线,可以通过画图的形式来表现,如图4.1所示。
图4.1 学习路线图
这张图包含了每个学习阶段的属性信息,并且也描述了它们之间的结构关系,对于人类理解来说,这是一种较为理想的描述方式,但如果让计算机理解这些信息,就有些困难了。本章即将学习的XML,就可以使此类问题变得简单。
XML是Extensible Markup Language(可扩展性标识语言)的缩写,是由W3C组织(万维网协会)推出的一种可扩展的标记语言。
作为标记语言,XML常用于存储和传输数据,但它本身不执行任何动作。简单点说,XML文档可以向外界提供信息,但开发者须调用其他软件或程序,才能对XML文档中的信息进行读取或传送。
和一般的标识语言相比,XML没有预定义任何标签,开发者可根据需要自定义标签。
下面使用XML方式描述上图中的信息,如例所示。
在以上实例中,通过XML文档也完成了对上图中信息的描述。<学习路线>……</学习路线>、<初级>……</初级>等是开发者自己定义的标签,通过标签,结构化的信息可以获得保存。
XML与HTML的区别
由于几乎所有的浏览器都支持HTML,与XML相比,HTML更广为人知。HTML与XML都是标记语言,都可以基于文本编辑和修改,它们结构类似,都以标签实现信息描述。但是细究起来,XML和HTML还是有着本质区别的。为了加深大家对标记语言的理解,下面对XML和HTML的区别进行分析。XML与HTML的对比如表4.1所示。
表4.1 XML与HTML的对比
对比项
XML
HTML
作用
设计目的是为了传输和存储数据,其焦点是数据的内容
设计目的是为了显示数据,其焦点是数据的外观
语法
要求所有的标签必须成对出现,标签区分大小写;属性值必须放在引号中;不会自动过滤空格
不是所有的标签都要求成对出现,标签不区分大小写;属性值的引号可用可不用;自动过滤空格
更新
允许粒度更新,不用在XML文档每次有局部改变时都发送整个文档的内容
不支持此类功能
扩展性
XML标签没有预定义,开发者可根据需要自定义标签
HTML 标签是预定义的,开发者只能使用当前 HTML 标准所支持的标签
从表4.1中可以看出,XML不是HTML的替代品,它们是两种不同用途的语言。实际上,XML 可以视作是对 HTML 的补充,它们在各自的领域分别发挥着不同的作用。
XML的功能
1. XML把数据从HTML分离
XML可以使动态数据和HTML文档相分离,将数据存储在独立的XML文件中,然后通过XML更新HTML中的数据,这样开发者就可以专注地使用HTML进行布局和显示,无须耗费过多的精力去关注数据的更新。
2. XML简化数据共享
通过XML,纯文本文件可以用来共享数据,它提供了一种独立于软件和硬件的数据存储方法,提升了数据的可用性。这使创建不同应用程序可以共享的数据变得更加容易。
3. XML简化数据传输
通过XML,可以在不兼容的系统之间轻松地交换数据。对开发人员来说,其中一项最费时的挑战是在不兼容系统之间交换数据。以XML交换数据,降低了跨平台传输数据的复杂性。目前流行的技术Ajax、Web Service等技术,均采用了这种方法。
4. XML简化平台变更
每当升级到新的系统时,必须转换大量的数据,这样会造成不兼容的数据经常会丢失。XML数据以文本格式存储。这使得 XML在不损失数据的情况下,更容易扩展或升级到新的操作系统或程序。
XML在Java Web中的应用
由于XML的功能强大,它在Java Web开发中得到广泛运用,是Java开发的有力助手。Java是跨平台的编程语言,不可避免要在各系统平台之间存储和传输数据,而XML刚好可以实现跨平台的数据传输,因此它们之间有着密不可分的关系。
1. 配置描述
众所周知,Web应用的基础配置信息是不固定的,要根据场景的不同而改变,如果将配置信息直接写入代码,势必会降低应用的扩展性和移植性。因此,Java Web开发通常会采用大量XML文档作为配置文件。不仅如此,各种开发框架(如Spring、Struts等)也通过XML文档管理基础配置。
2. 传输数据
各种系统平台采用互不兼容的数据存储格式,而Web应用往往面向不同平台的,这就会给数据传输带来一定困难。假如,一个Linux平台上的应用要向windows上的应用传输数据,将会面临传输障碍或者无法解析的问题。这时,可以采用XML方式实现跨平台的数据传输。如图4.2所示。
图4.2 XML实现跨平台传输
从图4.2可以看出,XML可以作为一种独立于硬件和软件的数据交换方式。通过XML文档,Web应用可以避免因系统不兼容而造成的数据传输障碍。
3. Web Services
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。通过Web Services,运行在不同系统上的、用不同语言编写的程序可以实现相互调用。WebService基于XML实现功能,它的通信协议要使用XML作为支撑。
4. 持久化数据
XML文档可以作为小型数据库,持久化一些特殊的数据。例如,程序中经常用到的一些系统数据,如果放在数据库中会增加维护数据库的工作量,此时可以考虑采用XML文档来做小型数据库。
XML的编辑工具
XML文档是一种文本文件,因此普通的文本编辑器都能直接对其进行编写,如Windows的“记事本”等。在开发中,通常使用集成开发工具编写XML文档,如Eclipse中就集成了XML编辑器。如图4.3所示。该编辑器除了具有普通的编辑功能外,还提供了可视化的编辑方式,开发者可根据需要选择使用。
图4.3 Eclipse提供的XML编辑器
XML的语法规范
XML的语法很简单,易用易学,而且没有预先定义标签,这给了开发者相当自由的空间。但XML文档作为一种结构化的文档,为了便于被其他程序读取和解析,还必须要遵循一定的规范。
XML文档的整体结构
一个XML文档有其自身的固有结构,大体由文档声明、元素、属性、注释 、CDATA区、转义字符等组成,为了便于大家理解,本书自定义一个相对完整的XML文档。
文档声明
XML的文档声明要放在文档的第一行,它能够提供关于该文档的基本信息,包括版本信息、编码信息等。文档声明的具体实现格式如下。
<?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?>
从上面的语法格式中可以看出,文档声明以符号“<?”开头,以符号“?>”结尾,中间的version代表XML版本信息,encoding代表文档编码信息,其中,version是必写项,现在常用的是1.0版本,encoding是选填项,如果不填就默认采用UTF-8编码方式。
需要注意的是,XML的文档声明必须位于文档的第一行,前面不能有任何字符。
XML元素
元素是XML文档的基本单元,一般是由开始标记、属性、元素内容和结束标记构成,具体示例如下。
<bookname>《Java WEB开发实战》</bookname>
其中,<bookname>是开始标记,</bookname>是结束标记,它们一起组成了一个元素。元素是可以嵌套的,如果一个元素没有嵌套在其他元素内,这个元素就称为根元素。如果一个元素没有嵌套其他元素,也不包含文本信息,这个元素称为空元素。
关于元素,需要注意以下几点。
1.
XML元素必须有关闭标签
在XML文档中,所有的元素必须有结束标记。当元素为空元素时,可以采用自封闭语法对该元素进行闭合。也就是说,空元素可以有两种表示方法,具体如下。
第一种:
<bookname></bookname>
第二种:
<bookname/>
2.
XML元素必须正确嵌套
在XML 中,所有元素都必须彼此正确地嵌套,下面的示例就是不合理的。
<计算机书籍><bookname> Java WEB开发实战 </计算机书籍></bookname>
正确语法应该是:
<计算机书籍><bookname> Java WEB开发实战 </bookname></计算机书籍>
3.
XML文档有且只有一个根元素
XML文档是一种标准的结构化文档,整个文档从根元素开始,根元素包含若干子元素,子元素又包含若干子元素,层层嵌套,最终组成了XML文档。因此,文档的所有内容都必须包含在唯一的根元素中。
4.
XML对大小写敏感
XML是区分大小写的,XML文档中的所有内容,包括标签名、属性名以及值,都要受到大小写的影响。
<Bookname>这是错误的</bookname>
<bookname>这是正确的</bookname>
在以上示例中,<Bookname>的首字母为大写,不能和后面的结束标记匹配,是错误的写法。
5.
XML文档中的空白被保留
当XML文档被读取或解析时,文档中的空白部分不会被解析器自动删除,而是要完整地保留下来。例如,有下面这样一个标签。
<bookname>《Java WEB开发 实战》</bookname>
其中,“开发”与“实战”之间的空白会被当作数据的一部分,开发者在使用XML时应注意这一点。
6.
XML元素的命名需遵循规则
在XML文档中,元素的名称可以包含字母、数字以及其他字符,但是也要遵循一定的规则,具体如下。
l 不能以数字或者下画线“_”开头。
l 不能以字符组合xml、Xml、xMl、xmL、XMl、xML、XML(即xml的大小写任何组合)等字符组合开头。
l 不能包含空格,<标 签></标 签>是错误的。
l 不能包含冒号“:”。
l 命名尽量简短,减少XML大小。
l 慎重使用非英文字符,某些应用程序可能不支持非英文字符。
l 不要使用点号“.”,点号在很多程序语言中表示引用等特殊含义。
l 不要使用减号“-”,以下画线“_”代替,避免与表达式中的减号运算符冲突。
l 区分大小写,<p/>和<P/>是不同标记。
XML属性
XML文档允许为XML元素指定属性,XML属性定义在XML元素的标签中,同时还要有其对应的值,如:
<bookname category=&#39;Java&#39;>Java Web开发实战</bookname>
属性可以为元素提供更多的额外信息,在以上的示例中,属性category是该元素的属性名,单引号中的Java是该元素的属性值。
需要注意的是,属性的定义也要遵循一定的规范,属性的命名规则和元素相同,除此之外,一个元素只能有一个同名的属性,一个元素中的多个属性没有顺序要求,属性值必须用双引号或单引号括起。
在XML文档中,可以使用元素的属性来替代子元素,这样也能描述相同的信息,如果有如下一段XML语句。
要是采用元素属性写法,可以改写成如下语句。
<计算机书籍 bookname=’Java WEB开发实战’> </计算机书籍>
在具体使用的时候,如果是描述数据,则应尽量使用子元素,如果是要补充信息,则尽量使用元素的属性。
XML注释
在编辑XML文档时,如果想备注一些附加信息或过滤掉某些内容,可以通过注释的方式来实现。XML的注释以
注释区中的内容不会被处理和解析,在使用过程中需注意以下几点。
1.
注释不能放在XML声明之前
XML声明提供了一个XML文档的版本和编码信息,必须位于第一行。而一些新入行的开发者往往会习惯性地在文档的第一行编写注释,如下所示。
<!--这是一个XML文档 -->
<?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?>
以上写法是错误的,注释不能放在XML声明之前。
2.
注释不能放入标签之内
注释放入标签内会造成文档错误,下面的写法是错误的。
<bookname <!—书名--> >Java WEB开发实战</bookname>
3.
注释内容中不能出现双中画线(“--”)
注释本身自带有双中画线,如果注释的内容中出现双中画线,会使程序产生误读。
<!-- Java WEB--开发实战 -->
在上面的示例中,Java Web与“开发实战”之间出现了双中画线,是错误的。
4.
注释不能以“--->”结尾
在下面的示例中,字符串“实战”后出现“-”,且和注释的结束标记“-->”连在一起,是错误的。
<!-- Java WEB开发实战--->
5.
注释不能嵌套使用
在程序读取XML文档中的注释时,如果出现注释嵌套的情况,程序将分不清楚注释的结构,造成误读。
转义字符的使用
在XML文档中,一些字符拥有特殊的意义。为了避免把字符数据和标签中需要用到的一些特殊符号相混淆,XML提供了转义字符的写法。
例如,在下面的示例中,需要使用“<”表示一个条件关系。
<condition> 1 < 2 </condition >
这时解析器会认为它是元素的开始标签,把它当作新元素的开始,这样会产生XML错误。为了避免错误,可以采用XML提供的转义字符“<”来代替“<”字符。上面示例的正确写法如下。
<condition> 1 < 2 </condition >
XML文档提供了五个常用的转义字符,如表4.2所示。
表4.2 特殊字符和转义字符对照表
特殊字符
转义字符
说明
<
<
小于号
>
>
大于号
&
&
和
&#39;
&#39;
单引号
&#34;;
&#34;
双引号
表4.2中列举的特殊字符,除了“<”和“>”外,其他都不强制要求转义,但为了减少出错,要养成在XML文档中使用转义字符的习惯。
CDATA区
CDATA区中嵌入的数据是不被XML解析器解析的。在XML文档中,如果某个部分出现大量需要转义的特殊字符,为了避免逐一转义的烦琐,可将它们放入CDATA区。
CDATA区以&#34;<![CDATA[ &#34;开始,以&#34; ]]>&#34; 结束,具体语法如下。
需要注意的是,CDATA区不能嵌套使用,CDATA区内部不能出现字符串&#34; ]]>&#34; ,CDATA 区结尾部分的 &#34;]]>&#34; 不能包含空格或换行符。
回复
使用道具
举报
灵猫
灵猫
当前离线
积分
16
1
主题
11
帖子
16
积分
新手上路
新手上路, 积分 16, 距离下一级还需 34 积分
新手上路, 积分 16, 距离下一级还需 34 积分
积分
16
发消息
发表于
前天 01:27
|
显示全部楼层
OMG!介是啥东东!!!
回复
使用道具
举报
返回列表
发帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
PHP
易语言
快速回复
返回顶部
返回列表