javaWeb 之 XML基础(一)

1、概述

一、XML

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

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

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

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

● 在平常应用中会常常看到XML格式的文件dom

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

二、什么是配置文件

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

● 传统配置文件的格式:spa

         #Db.Properties翻译

           DBServer=192.168.0.100code

           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领域的一种应用。

五、XML与数据库的比较

● 一个XML文档就像数据库中的一个表,具备三个要素:文档结构、文档数据和文档样式。

● XML文档的结构至关与数据库的表结构。

● XML标签内嵌套的数据就至关于数据库表中的某个字段内的数据。

● 数据库表中的数据能够采用表格、表单或其余形式显示,还能够用程序来查询、运算、修改。XML文档中的数据也能够被其余应用程序查询、运算、修改和以多种方式显示。

● 多个XML文档的元素之间还能够想数据库的表字段同样定义主外键关系,能够把XML文档当作是一个很是小型的数据库。

● XML很是适合信息交换,但不适合于大量数据处理。

2、XML的基本语法

一、文档声明

● 最简单的声明语法:

         <?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后面)

二、元素定义

● 一个XML元素由一个标记来定义,包括开始和借宿标记以及其中的内容,例如:

<书名>JavaWeb</书名>

● 一个元素中能够嵌套若干子元素。

● 格式良好的XML文档必须有且仅有一个根元素,其余元素都是这个根元素的子孙元素。

● 空元素能够不实用借宿标记,但必须在起始标记的借宿定界符(>)前面增长一个正斜杠(/)字符,例如:

      <img src=”log.gif” />

● 全部的元素都必须况且i的嵌套,绝对不容许标签交叉,c错例:

      <b>welcome to<i>www.baidu.com<b><i>

元素的标记名称规范

能够包含自摸、数字以及其余一些可见字符,但必须遵照下面的一些规范:

● 区分大小写,例如<P><p>是两个不一样的标签。

● 不能以数字或“_”(下划线)开头。

● 不能以字符组合xml(或XML、Xml等)开头。

● 不能包含空格。

● 名称中间不能包含冒号:。

元素的标记名称建议

● 不要使用“.”,由于在不少程序语言中,“.”用于引用对象的属性。

● 最好不要用减号(-),而如下划线(_)代替,以免与表达式中的减号(-)运算符发生冲突。

● 名称尽可能简短,以减小XML文档的大小。

● 名称的大小写尽可能采用同一标准,要么所有大写,要么所有小写。

● 名称可使用非英文字符,例如中文,可是有些软件可能不支持英文字符之外的字符,在使用时应考虑这种状况。

三、属性定义

● 一个标签能够有多个属性,每一个属性都有它本身的名称和取值,例如:

       <售价  单位=”元“>58</售价>

● 属性值必定要用双引号(””)或单引号(’’)引发来

● 属性遵循与标签相同呃命名规范

● 属性能够被改为用子元素来描述一样的信息,例如:

        <售价>

                      <单位>元</单位>

                      <价格>58</价格>

        </售价>

四、注释

● 用”<!--注释—>“这种格式加入注释

● XML声明以前不能有注释

● 一对注释符号之中不能包含另外一对注释符号,错例:

        <!--大段注释

         ……

               <!--局部注释-->

         ……

         -->

五、空格和换行的处理

● 对于XML中的标签之外的全部空格和换行,XML解析程序都要一个个如是地交割下游程序去处理。

● 下面两段内容的意义是不同的

      第一段:                                        第二段:

                                                           <网址>

     <网址>www.baidu.com</网址>            www.baidu.com

                                                           </网址>

● 因为在XML中,空格和换行都做为原始内容被处理,因此在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的”良好“书写习惯可能要被迫改变。

六、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片断。

七、特殊字符

特殊字符 替代符号
& &amp;
< &lt;
> &gt;
&quot;
&apos;

八、处理指令(processing instruction)

● 处理指令是processing instruction 的中文翻译,一般简称PI,用来为处理XML文档的应用程序提供指示信息。

● 处理指令以“<?”做为开头,以“?>”做为结尾,XML声明语句就是最多见的一种处理指令。

● XML分析器把处理指令原封不动的传给应用程序,由应用程序来解析这个指令,按照它所提供的信息进行处理。例如,在某个XML文档中能够包含下面的语句来告诉浏览器使用book.css控制起显示效果:

<?xml-stylesheet type=”text/css”href=”book.css”?>

相关文章
相关标签/搜索