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”?>
相关文章推荐
- 遭遇Spring MVC+MySQL保存中文变成乱码
- spring mvc注解例子
- spring 配置文件
- JAVA事务的概念
- struts2.2.3需要11个基本包
- JAVA事务的概念
- 同包不同文件,继承接口,编译出错:java错误找不到符号
- JAVA 的对象初始化过程
- 取消Eclipse中Java的一些预警。
- JAVA中的static方法
- java泛型
- 扩展SpringMVC以支持更精准的数据绑定1
- 括号小麻烦
- bagging算法java实现(从N个样本中有放回地取N次)
- 解决‘javac’不是内部或外部命令的问题 只需要三步
- 2014/3/10 SpringMVC中DispatcherServlet理解
- 往Eclipse上添加CDT
- 细数JDK里的设计模式
- Java多线程编程总结
- 消费者和生产者问题