您的位置:首页 > 编程语言 > Java开发

javaWeb 之 XML基础(一)

2014-03-10 15:24 211 查看

一、概述

1、XML

● XML是一种通用的数据交换格式

● 许多系统的配置文件搜使用XML格式

● JSP文档也逐步向XML愈发格式过渡

● 许多项目都采用XML作为数据交换格式

● 在日常应用中会经常看到XML格式的文件

● 掌握XML是软件开发人员的一项基本技能

2、什么是配置文件

● 配置文件就是记录应用程序的配置信息的文件

● 传统配置文件的格式:

#Db.Properties
DBServer=192.168.0.100
Database=emp
Port=1443
Username=zxx
Password=123

3、XML的起源与作用

● 在线电子商务活动交换的电子文档必须采用某种标准格式,统一电子文档的标准规范是电子商务的基础。
● HTML不适合作为电子商务的文档标准。
● SGML(Standard Generalized Markup Language)国语复杂,无法适应网络上的日常应用。
● W3C于1998年2月批准了XML(Extensible Markup Language)的1.0版本。XML是SGML的建华,语法与HTML非常相似。
● XML具有SGML的强大功能和可扩展性,同时又具有HTML的简单性。
● XML文档很容易创建,并结构清晰,不仅让人能够明白,还然计算机也能够明白。
● XML作为一种公订的,开放 的标准,不受知识产权的限制。

4、XML与HTML的比较

● HTML将数据和显示效果混在一起,它是一种表现技术;XML文档只是存储了数据和描述了数据之间的关系,没有规定该如何显示数据。
● HTML的格式要求比较松散;而XML是非常严格的标记语言。
● HTML的标记集合是固定的;而XML只是提供了一个标准,人们可以按照这个标准来定义自己专用的标记。
● XML允许粒度更新,HTML不支持类似功能。
● XML不是HTML的升级,也不是HTML的替代产品。
● HTML目前已经不再是WEB标记的标准,它是已经被XHTML所取代,XHTML是HTML和XMl的混合物,是XML在WEB领域的一种应用。

5、XML与数据库的比较

● 一个XML文档就像数据库中的一个表,具有三个要素:文档结构、文档数据和文档样式。
● XML文档的结构相当与数据库的表结构。
● XML标签内嵌套的数据就相当于数据库表中的某个字段内的数据。
● 数据库表中的数据可以采用表格、表单或其他形式显示,还可以用程序来查询、运算、修改。XML文档中的数据也可以被其他应用程序查询、运算、修改和以多种方式显示。
● 多个XML文档的元素之间还可以想数据库的表字段一样定义主外键关系,可以把XML文档看成是一个非常小型的数据库。
● XML非常适合信息交换,但不适合于大量数据处理。

二、XML的基本语法

1、文档声明

● 最简单的声明语法:
<?xml version=”1.0” ?>
● 用encoding属性说明文档的字符编码:
<?xml version=”1.0”encoding=”GB2312”?>(未设置默认为UTF-8或UTF-16)
● 用standalone属性说明文档是否独立:
<?xml vesion=”1.0”encoding=”GB2312”standalone=”yes”?>(需要配合其他文件,standalone设置为“no”,encoding和standalone同时设置时,standalone必须在encoding后面)

2、元素定义

● 一个XML元素由一个标记来定义,包括开始和借宿标记以及其中的内容,例如:
<书名>JavaWeb</书名>
● 一个元素中可以嵌套若干子元素。
● 格式良好的XML文档必须有且仅有一个根元素,其他元素都是这个根元素的子孙元素。
● 空元素可以不实用借宿标记,但必须在起始标记的借宿定界符(>)前面增加一个正斜杠(/)字符,例如:
<img src=”log.gif” />
● 所有的元素都必须何况i的嵌套,绝对不允许标签交叉,c错例:
<b>welcome to<i>www.baidu.com<b><i>

元素的标记名称规范

可以包含自摸、数字以及其他一些可见字符,但必须遵守下面的一些规范:
● 区分大小写,例如<P><p>是两个不同的标签。
● 不能以数字或“_”(下划线)开头。
● 不能以字符组合xml(或XML、Xml等)开头。
● 不能包含空格。
● 名称中间不能包含冒号:。

元素的标记名称建议

● 不要使用“.”,因为在很多程序语言中,“.”用于引用对象的属性。
● 最好不要用减号(-),而以下划线(_)代替,以避免与表达式中的减号(-)运算符发生冲突。
● 名称尽量简短,以减少XML文档的大小。
● 名称的大小写尽量采用同一标准,要么全部大写,要么全部小写。
● 名称可以使用非英文字符,例如中文,但是有些软件可能不支持英文字符以外的字符,在使用时应考虑这种情况。

3、属性定义

● 一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:
<售价 单位=”元“>58</售价>
● 属性值一定要用双引号(””)或单引号(’’)引起来
● 属性遵循与标签相同呃命名规范
● 属性可以被改成用子元素来描述同样的信息,例如:
<售价>
<单位>元</单位>
<价格>58</价格>
</售价>

4、注释

● 用”<!--注释—>“这种格式加入注释
● XML声明之前不能有注释
● 一对注释符号之中不能包含另一对注释符号,错例:
<!--大段注释
……
<!--局部注释-->
……
-->

5、空格和换行的处理

● 对于XML中的标签以外的所有空格和换行,XML解析程序都要一个个如是地交割下游程序去处理。
● 下面两段内容的意义是不一样的
第一段: 第二段:
<网址>
<网址>www.baidu.com</网址> www.baidu.com
</网址>
● 由于在XML中,空格和换行都作为原始内容被处理,所以在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的”良好“书写习惯可能要被迫改变。

6、CDATA区

● 问题:
XML文档中包含类似”Elements look like <this>“的文本,其中的”<this>“将被解析程序解释成一个元素,而人们实际想要的是”<this>”所表示的愿意文本。
● CDATA区全称为character data,以”<![CDATA[“开始,以”]]>“结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给下游程序去处理。
● CDATA区中的起始和结束处有没有空格和换行字符是有区别的,例如:
<![CDATA[www.baidu.com]]>

<![CDATA[
www.baidu.com
]]>
● ”<![CDATA[“不能写成”<![cdata[“或”<![Cdata[“。
● CDATA区内部不能出现字符串”]]>“,该如何解决?
在CDATA内部的所有内容都会被解析器忽略。一个 CDATA 部件以"<![CDATA[" 标记开始,以"]]>"标记结束。但是要记住,CDATA是不能够嵌套的。但是现在,就是有人要求实现CDATA的嵌套。

比如,将下面这段XML加到另外一个XML的某个元素里面:

<?xml version="1.0" encoding="UTF-8" ?>
<System><id>library</id>
<name>Library Management</name>
<description><![CDATA[This is a sample library management subsystem for Signet.]]></description>
<Categories>
<System/>

将内部的CDATA的结尾转义?那就变成了"<![CDATA[" 和"]]>amp;",这样不好,接收XML的那一方怎么会知道你在里面加上了转义?

那么,可以把CDATA的结尾的"]]>"破坏掉,把它分到两个CDATA中,然后调用Java的API读取该元素的数据时,实际上API同时读取两个CDATA块,然后合成一个。

那么,把上面的XML作为一个字符串来处理,将"]]>"替换为"]]]]><![CDATA[",千万要记住,不要包含空格进去。这样,结果应该是

<?xml version="1.0" encoding="UTF-8"?>
<Messages>
<Message type="data">
<code>1199242678515-176590595</code>
<date>2008/01/02</date>
<time>10:57:58</time>
<content><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
<System><id>library</id>
<name>Library Management</name>
<description><![CDATA[This is a sample library management subsystem for Signet.]]]]><![CDATA[></description>
<Categories>
<System/>]]></content>
</Message>

</Messages>

这样,利用Object org.dom4j.Element.getData()方法得到的数据才是原始的XML片段。

7、特殊字符

特殊字符替代符号
&&
<<
>>
"
'

8、处理指令(processing instruction)

● 处理指令是processing instruction 的中文翻译,通常简称PI,用来为处理XML文档的应用程序提供指示信息。
● 处理指令以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。
● XML分析器把处理指令原封不动的传给应用程序,由应用程序来解析这个指令,按照它所提供的信息进行处理。例如,在某个XML文档中可以包含下面的语句来告诉浏览器使用book.css控制起显示效果:
<?xml-stylesheet type=”text/css”href=”book.css”?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: