XML小知识
XML小知识
1、简介
XML(Extensible Markup Language)可扩展标记语言。
2、文档声明
(1)<?xml version="1.0" encoding="UTF-8"?>
- versioin:XML文档版本
- encoding:当前文档的编码
(2)文档声明必须以<?xml开头,以?>结束,中间无空格
(3)文档声明必须从文档的0行0列位置开始
3、注释
<!-- -->
注释内容会被XML解析器忽略
4、元素element
(1)空元素:元素闭合 <x/>
(2普通元素的结构开始标签、元素体、结束标签组成 <x> </x>
5、转义字符
- 字符 < ------ 实体引用: <
- 字符 > -------实体引用: >
- 字符 " --------实体引用: "
- 字符 ’ ---------实体引用:&apos
- 字符& --------实体引用: &
6、CDATA区
<![CDATA[任意内容]]>
(1)在CDATA段中出现的“<”、“>”、“””、“’”、“&”,都无需使用转义字符
(2)在CDATA段中不能包含“]]>”,即CDATA段的结束定界符。
7、DTD约束
(1)DTD(Document Type Definition),文档类型定义
(2)规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等
(3)元素声明
语法:<!ELEMENT 元素名元素描述>
- 符号 ? ----- 对象可以出现,只能出现一次
- 符号 * -----对象出现任意多次,可为0次
- 符号+ -----对象最少出现一次,可以出现多次
- 符号() -----给元素分组
- 符号 | ------在列出的对象中选择一个
- 符号 , -----对象必须按指定的顺序出现
(4)属性声明
<!ATTLIST 元素名
属性名 属性类型 约束
属性名 属性类型 约束
...
#REQUIRED:说明属性是必须的;required
#IMPLIED:说明属性是可选的;implied
>
7、Schemal约束
8、XML解析
(1)常见三种解析方式
- DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象。
- SAX:是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件驱动的方式进行具体解析,每执行一行,都将触发对应的事件。
- PULL:Android内置的XML解析方式
(2)常见的解析开发包:
- JAXP:sun公司提供支持DOM和SAX开发包
- JDom:dom4j兄弟
- jsoup:一种处理HTML特定解析开发包
- dom4j:比较常用的解析开发包,hibernate底层采用
(3)DOM解析
将整个XML文档加载到内存,并获得一个Document对象
9、dom4j使用
(1)核心类SaxReader加载xml文档获得Document
(2)SaxReader对象
read(…) 加载执行xml文档
(3)Document对象
getRootElement() 获得根元素
(4)Element对象
- elements(…) 获得指定名称的所有子元素。
- element(…) 获得指定名称第一个子元素。
- getName()获得当前元素的元素名
- attributeValue(…) 获得指定属性名的属性值
- elementText(…) 获得指定名称子元素的文本值
- getText() 获得当前元素的文本内容