XML
是指可扩展标记语言,是一种标记语言,类似HTML
设计宗旨在于传输数据,而非显示数据
标签没有被预定义,需要自定义标签
被设计为具有自我描述性
XML仅仅是纯文本,XML无处不在,XML是各种应用程序之间进行数据传输的最常用的工具。
XML文档形成了一种树结构,他从“根部”开始,然后扩展到“枝叶”。
所有XML元素有开始标签,也必须有关闭标签,对大小写敏感
Dom4j
dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点
DOM4J 最大的特色是使用大量的接口,它的主要接口都在org.dom4j里面定义。
Attribute | 定义了 XML 的属性。 |
Branch | 指能够包含子节点的节点。如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为 |
CDATA | 定义了 XML CDATA 区域 |
CharacterData | 是一个标识接口,标识基于字符的节点。如CDATA,Comment, Text. |
Comment | 定义了 XML 注释的行为 |
Document | 定义了XML 文档 |
DocumentType | 定义 XML DOCTYPE 声明 |
Element | 定义XML 元素 |
ElementHandler | 定义了Element 对象的处理器 |
ElementPath | 被 ElementHandler 使用,用于取得当前正在处理的路径层次信息 |
Entity | 定义 XML entity |
Node | 为dom4j中所有的XML节点定义了多态行为 |
NodeFilter | 定义了在dom4j 节点中产生的一个滤镜或谓词的行为(predicate) |
ProcessingInstruction | 定义 XML 处理指令 |
Text | 定义 XML 文本节点 |
Visitor | 用于实现 Visitor模式 |
XPath | 在分析一个字符串后会提供一个 XPath 表达式 |
接口之间的继承关系如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<root>
<user>
<name id="1" name="qaz">张三</name>
<pwd>123</pwd>
<age>12</age>
</user>
<user>
<name id="2" name="dfe">李四</name>
<pwd>555</pwd>
<age>20</age>
</user>
</root>
</configuration>
public class DomTest {
public static void main(String[] args) {
try {
SAXReader reader = new SAXReader();
InputStream in= new FileInputStream("src/com/xxx/demotest.xml");
Document document = reader.read(in);
//获取根元素
Element el = document.getRootElement();
System.out.println(el.getName());
//在根元素里面查找第一个大标签,root
Element root= el.element("root");
//在root里面查找第一个user
Element user1 = root.element("user");
Element name = user1.element("name");
System.out.println(name.getStringValue());
//遍历获取
List<Element> list = el.elements();
for (Element element: list) {
List<Element> list2 = element.elements();
for (Element element2: list2) {
List<Element> list3 = element2.elements();
for (Element element3: list3) {
System.out.println(element3.getName() + ":" + element3.getStringValue());
}
}
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
结构树和效果:
更多具体操作参考👉om4j完整教程详解