XML:eXtensible Markup Language
它是万维网联盟定义的一种可扩展标志语言。可以很方便的表达多层结构的数据。并且可以多平台操作。
xml中有严格的语法:
1.声明:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
(其中version表示的是XML的版本号,encoding 表示的字符集,UTF-8字符集是一个支持字符和文字的Unicode 标准,ISO-8859-1 字符集则是大多数西欧语言用到的所有字符。)
2.XML文件有且仅有一个根标记,其他标记必须封装在根标记中,文件的标记必须形成树状结构。标签必须成对出现。
<student>
<stu num="20141010">
<name>cc</name>
<sex>n</sex>
</stu>
<stu>
<name>cc</name>
<sex>n</sex>
</stu>
</student>
3.元素。一个XML只有一个根元素,根元素下面的所有元素叫子元素
4.属性。每一个元素的属性不允许出现超过一次。所有的属性值必须位于单引号或双引号中。
5.注释。注释可以出现在文档的任何位置。注释以 <!-- 开始,以 --> 结束。
6.实体。 XML 规范预定义了五个实体。
< ==== <
> ==== >
" ==== ”
' ==== ‘
& ==== &
当一段文本中出现很多实体引用和字符引用时,会导致文本数据的读写困难。可以使用CDATA区段开始于 "<![CDATA[" 结束于 "]]>" 。CDATA内部的所有东西都会被解析器忽略解析,不用检查它的格式。
XML处理模式:
一、 DOM 文档对象模式
以树型结构访问XML文档。 一棵DOM树包含全部元素节点和文本节点。可以前后遍历树中的每一个节点。整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。
二、 SAX 基于事件处理模式
解析器向一个事件处理程序发送事件,比如元素开始和元素结束,而事件处理器则处理该信息。然后应用程序本身就能够处理该数据。原始的文档仍然保留完好无损。
比较DOM与SAX:
DOM:DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问,所以处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多。
优点:1.提供随机定义元素操作,来回移动指针
2.将整个XML文件一次性加载到内存,形成虚的内存树
缺点:1.如果XML文件较大,内存空间占用较大
2.强制将较大的XML文件加载到内存中,有可能损害文件
3.功能通用性
SAX:不同于DOM,SAX是事件驱动型的XML解析方式。它顺序逐行读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。