1.概述:
可扩展标记语言(EXtensible Markup Language)
主要作用:配置文件(更主要的作用),存放数据
2.XML文档声明
<?xml version="1.0" encoding="UTF-8"?>
文档必须以<?xml开头,以?>结束
文档声明必须从文档的0行0列位置开始
version:指定XML文档的版本,必须属性,选择1.0
encoding:指定当前文档的编码,可选属性,默认值是UTF-8
3.XML的元素
例:<default-config>
4.XML的注释
<!-- -->
5.XML的转义字符
例:<property name="password"><123456</property>
当出现大量的转义字符时,使用CDATA
格式:<! [CDATA[
任意内容
]] >
6.XML的常见的约束:DTD Schema
(1)DTD 文档类型定义:扩展名是dtd
(2)Schema:比DTD强大的多,扩张名是xsd
命名空间:处理元素和属性的名称冲突问题
声明命名空间:
默认命名空间:<xxx xmlns="">,使用<标签>
显式命名空间:<xxx xmlns:别名="">,使用<别名:标签>
7.XML的解析方式:DOM,SAX,PULL
DOM解析:要求解析器把整个XML文档装载到内存,并解析成一个Document对象
优点:元素和元素之间保留结构关系,可以进行增删改查操作
缺点:XML文档过大,可能出现内存溢出现象
常见的解析开发包:
JAXP:sun公司提供支持DOM和SAX开发包
JDom:dom4j兄弟
jsoup:一种处理HTML特定解析开发包
dom4j:比较常用的解析开发包,hibernate底层采用
如果需要使用dom4j,必须导入jar包:dom4j-1.6.1.jar
dom4j必须使用核心类SaxReader加载xml文档获得Document,通过Document对象获得文档的根元素,就可以操作了
常用API:
demo:
package com.sh.day11;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class TestDom4j {
@Test
public void testDom4j() {
try {
// 获取文档
SAXReader sax = new SAXReader();
Document document = sax.read("src/web.xml");
//获取根元素
Element rootElement = document.getRootElement();
//System.out.println(rootElement.getName());
//获取根元素的版本
String version = rootElement.attributeValue("version");
//System.out.println(version);
//获得根元素的所有子元素
List<Element> elements = rootElement.elements();
for (Element element : elements) {
System.out.println(element.getName());
//获取servlet的子元素servlet-name的值
if ("servlet".equals(element.getName())) {
Element element2 = element.element("servlet-name");
String text = element2.getText();
System.out.println(text);
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}