XML、Dom4j

166 阅读2分钟

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 表达式

接口之间的继承关系如下: image.png

<?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();
        }

    }
}

结构树和效果:
image.png

更多具体操作参考👉om4j完整教程详解

参考: DOM4J——强大而易用的XML解析器,我们不只是有数据库