什么是XML
XML是指可扩展标记语言(EXtensible Markup Language),与HTML类似。设计的宗旨是传输数据,它没有规定的标签体,需要自定义标签,可以存储数据和共享数据。
- HTML用来 显示数据;XML用来传输和存储数据。
- XML属于文本文件,可用多种文本编辑器编辑。
基本语法
XML基本结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user>
<name>张三</name>
<age>20</age>
</user>
</users>
XML文档,首先要有声明,如上第一行<?xml ?>
,其中version指该文档遵循的XML标准版本,encoding用于指明文档使用的字符编码格式。
标记必须闭合
若元素没有文本内容,则采用则采用自闭合的方式关闭节点,例如<weight/>
。
XML元素命名规则
元素是指成对标签出现的内容,且元素间存在层级关系,比如<name>
元素指的是<name>张三</name>
,<user>
元素是:
<user>
<name>张三</name>
<age>20</age>
</user>
其中,<name>
元素是<user>
元素的子元素 ,<user>
元素是<name>
元素的父元素 。
- 命名可包含字母、数字和其他字符
- 不能包含空格
- 不能以数字或标点符号开头
- 不能以XML开头,包含大小写,如:xML
- 不要使用冒号
:
,因为XML命名空间需要用到这个字符 - 大小写敏感
XML属性
元素可以在开始标签中包含属性,类似HTML,属性(Attribute)提供关于元素的额外(附加)信息,它被定义在元素的标签中,且自身有对应的值,例如:
<?xml version="1.0" encoding="UTF-8"?>
<users language="java">
<user>
<name>张三</name>
<age>20</age>
</user>
</users>
- 属性的命名规则与元素的一致
- 属性值同样大小写敏感
- 属性值必须使用引号,单双都可,若属性值本身包含双引号,可用单引号或实体(")引用它
只有一个根元素
- 即最外层必须有唯一一个父元素,不可存在多个同级元素
空白被保留
元素内value的空白部分会被当做数据一样完整保留。例如:
<name>张三 ZhangSan</name>
解析出来内容为张三 ZhangSan
,空白被保留。
注释写法
<!-- 单行注释 -->
<!--
多行注释
-->
CDATA的使用
CDATA是用于需要原文保留的内容,尤其是在解析XML过程中产生歧义的部分,例如拥有大量需要转义的字符时。其用法如下:
<![CDATA[
内容
]]>
- CDATA不能嵌套
常见的XML解析模型
DOM解析
DOM在解析时把整个XML文件映射到Document的树形结构中,XML中的元素、属性、文本都能在Document中看清,但是它消耗内存、查询速度慢。
SAX解析
SAX是基于事件的解析,解析器在读取XML时根据读取的数据产生相应的事件,由应用程序实现相应的事件处理,所以它的解析速度快,内存占用少。但是它需要应用程序自身处理解析器的状态,实现起来比较麻烦,而且它只支持对XML文件的读取,不支持写入。
DOM4j解析(推荐)
DOM4j开源库使用接口和抽象类的方法,并使用了大量的 Collections类,提供一些替代方法以允许更好的性能或更直接的编码方法。不仅可读取,也可写入。下载地址DOM4j。
网友评论