第20章 Java XML解析技术
1、XML
XML(eXtended MarkupLanguage)可扩展标记语言的缩写,是一种类似HTML 的标记。XML是被设计用来描述数据,能够用纯文本的形式表现各种机构复杂的数据,易于在各平台上构造和解析,因此在跨平台网络数据交换、数据存储等方面得到广发的应用。
1.1、可扩展性:
指程序员可以定义自己需要的标记,创建自己的标记语言,但定义标记时必须遵守XML规范。
1.2、标记语言:
也称为置标语言,是一种将文本以及文本相关的其他信息2结合起来、展现出关于文本结构和数据处理细节的电脑文字编码。当今广泛的标记语言有超文本标记语言(HTML)。和可扩展标记语言(XML)。标记语言广泛应用于网页和网络应用程序等。
XML文本分两部分组成:
序言:包括声明、处理指令、文档类型定义、注释组成。
文档元素:包括根元素、元素、属性、和文本组成。
Xml声明有以下几部分组成:
Version:文档符合XML1.0规范,现在只有1.0
Encoding文档字符编码,默认为UTF-8
Standalone:文档定义是否在一个文件内
-Standalone = “yes”
-Standalone = “no”
<?xmlversion = “1.0”encoding = “UTF-8”,
1.3、XML的注释:
<!- -注释内容- - >
1) 不要把注释放在标记中间:
2) 注释不能嵌套;
3) 可以在除标记以外的任何地方放注释。
1.4、XML处理指令:
1)处理指令用于 XML解析器传递信息到应用程序。
-XML解析器是读取并保存XML文档内容的软件模块
2)格式:<?处理指令名称处理指令信息?>
指明了与其所属文档配套使用的样式表的类型为XSL。
1.5、XML的元素:
元素TITLE <TITLE>lovoinfo.com<TITLE> 有元素开始<TITLE>lovo、文本、元素结束组成;
空元素
1.6、XML根元素:
1) 每个XML文档必须有且只有一个根元素
2)根元素是一个完全包括文档中其他所有元素的元素
3)根元素的起始标记要放在所有其他的起始标记之前
4)根元素的结束标记要放在所有其他元素的结束标记之后。
1.7、XML实体:
XML中预定的符号如:“<”、“”“、”>”、如果XML文档中出现了这样的数据,使用预定的实体类代替。
实体 |
符号 |
< |
< |
> |
> |
&am |
& |
" |
“ |
&apos |
‘ |
1.8、XML元素属性:
格式如下:
<Student ID = “100”
<Name>TOM</Name>
</Student>
1) 属性值用双引号(“)或单引号(‘)分隔(如果属性值中有’,用”分隔;有 “ ,用 ‘ 分隔)
2) 一个元素可以有多喝属性,他的基本格式为:
1.9、CDATA:
用于把整个段文本解释为纯字符数据而不是标记的情况。
特点:
是不被解析器解析的文本。文本内的标签不会被当做标记,实体不会被展开。
语法:
<![CDATA[
。。。。。。。。。
] ]>
可以输入任意字符(除)]])
1.10、结构完整的XML文本:
1、 语法规范:
1) --必须有XML声明语句
<?xml version=”1.0”encoding=”gb2312”?>
2) --必须有且有一个根元素
3) --标记大小写敏感
4)属性值用引号
5)/
2、 元素语法
1.11、XML解析技术:
1) 文档对象模型(DOM),一种基于树结构的API。
2) XML简单API(SAX),一种事件驱动的API。
2、DOM和SAX的区别:
2.1、DOM
核心是按树的结构处理XML数据,DOM解析器读取XML文档并在内存中建立一个文档树结构,通过操作此结构来处理XML文档。
DOM优点:
是编程容易,可以从上到下多次遍历;
DOM缺点
是由于DOM解析是需要将XML文档整个读入内存,所以占用内存大,不合适大型XML文档的解析。
2.2、SAM:
SAM核心是事件驱动处理机制,它采用逐行烧苗文档,一边扫描一边解析的方式。由于SAM不需要将XML文档整个读入内存。
SAM优点:
是占用内存少,效率高,适合大型XML文档的解析;
SAM缺点:
是事件触发是有序的,文档只能遍历一次。