跳至主要內容

使用 XML 工具: digester

Steven小于 1 分钟xmljavajaxbapache

Digester 最初是 Struct MVC 框架的一个模块,后加入到 Apache Commons 组件库中,形成了一个功能强悍的 XML 解析库。

Digester 底层基于 SAX + 事件驱动 + 栈的方式实现的,这三个技术作用如下:

  • SAX —— 解析 XML
  • 事件驱动 —— 在 SAX 解析的过程中加入事件来了支持对象映射
  • 栈 —— 解析 XML 元素的开始和结束时,需要通过 XML 元素映射的类对象入栈和出栈来完成事件的调用

Digester 解析 XML 的核心流程:

  1. 开始解析节点,是否需要创建一个类
  2. 开始解析节点,是否需要入栈操作
  3. 结束解析节点,是否需要执行某个方法
  4. 结束解析节点,是否需要出栈操作
https://github.com/LawssssCat/blog/tree/master/code/demo-java-xml/n11-digester-usage/test/java/org/example/

XML 文件
<?xml version="1.0" encoding="utf-8" ?>
<my-content>
    <web-site>http://www.example.org</web-site>
    <owner>steven</owner>
    <description>原生 java xml 操作测试消息</description>
    <posts>
        <!-- 我是注释 -->
        <post id="P001">
            <title>文章标题01</title>
            <content>hello world 01!</content>
        </post>
        <post id="P002">
            <title>文章标题02</title>
            <content>hello world 02!</content>
        </post>
    </posts>
</my-content>