XML是一种可扩展标记语言,标签由开发者自己制定(但要遵守一定的语法规则)。
(1)描述带关系的数据(作为软件的配置文件): 包 含与被包含的关系。
(2)作为数据的载体(存储数据,小型的“数据库”)。
作用:1.描述带关系的数据(软件的配置文件)2.数据的载体(小型的“数据库”)
XML语法:
xml文件以xml后缀名结尾。
xml文件需要使用xml解析器去解析。浏览器内置了xml解析器。
.1 标签
语法: 开始标签 标签体内容 结束标签
1) 或 空标签。没有标签体内容
2)xml标签名称区分大小写。
3)xml标签一定要正确配对。
4)xml标签名中间不能使用空格
5)xml标签名不能以数字开头
6)注意: 在一个xml文档中,有且仅有一个根标签
.2 属性
语法: student
注意:
1)属性值必须以引号包含,不能省略,也不能单双引号混用!!!
2)一个标签内可以有多个属性,但不能出现重复的属性名!!!
.3 注释
语言: <!-- xml注释 -->
.4 文档声明
语法: <?xml version="1.0" encoding="utf-8"?>
version: xml的版本号
encoding: 解析xml文件时查询的码表(解码过程时查询的码表)
注意:
1)如果在ecplise工具中开发xml文件,保存xml文件时自动按照文档声明的encoding来保存文件。
2)如果用记事本工具修改xml文件,注意保存xml文件按照文档声明的encoding的码表来保存。
.5 转义字符
在xml中内置了一些特殊字符,这些特殊字符不能直接被浏览器原样输出。如果希望把这些特殊字符按照原样输出到浏览器,对这些特殊字符进行转义。转义之后的字符就叫转义字节。
特殊字符 转义字符:
< <
> >
" "
& &
空格 &nsbp;
.6 CDATA块
作用: 可以让一些需要进行包含特殊字符的内容统一进行原样输出。
.7 处理指令
作用: 告诉xml解析如果解析xml文档
案例: <?xml-stylesheet type="text/css" href="1.css"?> 告诉xml解析该xml文档引用了哪个css文件,需要提前xml内容可以使用xml-stylesheet指令指令
XML解析方式(原理不同)
DOM解析和SAX解析
DOM解析原理:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容。一般使用Dom4J工具(非官方)
SAX解析原理: 加载一点,读取一点,处理一点。对内存要求比较低。内置在jdk中。org.xml.sax.*
在使用DOM解析的时候,当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!这里引入了Xpath技术,xPath作用主要是用于快速获取所需的节点对象。
xPath语法:
/ 绝对路径 表示从xml的根位置开始或子元素(一个层次结构)
// 相对路径 表示不分任何层次结构的选择元素。
* 通配符 表示匹配所有元素
[] 条件 表示选择什么条件下的元素
@ 属性 表示选择属性节点
and 关系 表示条件的与关系(等价于&&)
text() 文本 表示选择文本内容
SAX解析核心的API:
SAXParser类: 用于读取和解析xml文件对象
**parse(File f, DefaultHandler dh)**方法: 解析xml文件
参数一: File:表示 读取的xml文件。
参数二: DefaultHandler: SAX事件处理程序。使用DefaultHandler的子类
例如:
{
1.创建SAXParser对象
SAXParser parser=SAXParserFactory.newInstance().newSAXParser();
2.调用parse方法
parser.parse(new File("./src/contact.xml"), new MyDefaultHandler());
}[一个类继承class 类名(extends DefaultHandler) 在调用是创建传进去]