(一)XML
(1)简介
- XML:Extensible Markup Language
- 可扩展的标记语言
- 使用
- 属性必须放在引号内
- 标签必须要关闭
- 应该有一个根标签
<?xml version="1.0" encoding="UTF-8" ?> //放在文本第一行
- 标签
- 标签可以自定义,但是有保留字比如XML
- \<等转义字符(和Markdown的语法有点类似)
(2)CDATA
- CDATA
- XML文件中的所有文本都会被解析器解析除了CDATA标签中的内容
- 所以CDATA可以在一定程度上替换转义
<![CDATA[文本]]>
(3)XML解析
- sax解析:逐行解析
- dom解析:一次性将文档加载到内存中,形成dom树
- dom4j:一个Java的XML API,用于读写XML文件
- 导入jar包:比如dom4j-1.6.1.jar
- 解析过程Demo
//创建核心对象
SAXReader reader = new SAXReader();
//获取dom树
Document doc = reader.read("F:\\Learn-Java\\Head First Java Web\\BasicDemo0\\xml\\web.xml");
//获取根节点
Element root = doc.getRootElement();
//获取其他节点
List<Element> list = root.elements();
//遍历
for(Element e : list){
//打印doc中servlet-name节点的值
String text = e.elementText("servlet-name");
System.out.println(text);
}
- xpath解析
- 导入jar包:比如jaxen-1.1-beta-6.jar
- doc.selectNodes()
- doc.selectSingleNode()
Document doc = new SAXReader().read("F:\\Learn-Java\\Head First Java Web\\BasicDemo0\\xml\\web.xml"); //加载dom树
List<Element> list = doc.selectNodes("/web-app/servlet/servlet-name"); //获取Element列表
Element e = list.get(0); //选择第一个元素进行测试
String text = e.getText();
System.out.println(text); //打印节点内容
(4)XML约束
- XML约束:规定在xml文件中可以出现的元素、属性以及出现的顺序
- 约束分类
- DTD约束:structs & hibernate
- SCHEMA约束 :tomcat * Spring
(1)DTD
- 一个XML文件中只能添加一个DTD约束,可以是本地,也可以来自网络(PUBLIC)
- XML文件和DTD文件的关联
- 外部关联
- 写在XML文件的开头:
<!DOCTYPE xml文件的根元素名 SYSTEM "DTD文件的路径"> //外部关联写法
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd"> //例子
- DTD语法说明
<!ELEMENT 元素名称 (包含元素)> //格式
<!ELEMENT servlet-mapping (servlet-name,url-pattern) > //在servlet-mapping元素标签下需要包含servlet-name和url-pattern两个标签
<!ELEMENT 元素名称 (#PCDATA)> //表示一个标准的元素名称
<!ELEMENT servlet-name (#PCDATA)> //定义servlet-name标签
- 标签属性
- REQUIRED 必须的属性
- IMPLIED 可选的属性
- 其他DTD语法参考正则表达式
(2)SCHEMA
- 一个XML文件可以有多个SCHEMA约束