黑马程序员技术交流社区

标题: 【成都校区】DOM4J的解析 [打印本页]

作者: 小蜀哥哥    时间: 2019-5-29 20:52
标题: 【成都校区】DOM4J的解析
Dom4j解析
前言

XML是可扩展标记语言的缩写,在编程领域是非常常用的,我们经常会用它进行数据的传输或者用作配置文件,那么对XML的操作的也会是我们需要掌握的一项技术,本文会使用Java语言,利用DOM4J这个非常优秀的开源库,探讨生成XML格式数据和解析XML数据的两个方面的问题。
1. Dom4J简介2. Dom4j的使用
以下是代码实现

[Java] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.io.File;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.SAXReader;

public class Dom4JTest2 {
    public static void main(String[] args) throws Exception {
        SAXReader saxReader = new SAXReader();
                // 获取文档对象      
        Document document = saxReader.read(new File("students.xml"));

        // 获取根元素
        Element root = document.getRootElement();
        System.out.println("Root: " + root.getName());

        // 获取所有子元素
        List<Element> childList = root.elements();
        System.out.println("total child count: " + childList.size());

        // 获取特定名称的子元素
        List<Element> childList2 = root.elements("hello");
        System.out.println("hello child: " + childList2.size());

        // 获取名字为指定名称的第一个子元素
        Element firstWorldElement = root.element("world");
        // 输出其属性
        System.out.println("first World Attr: "
                + firstWorldElement.attribute(0).getName() + "="
                + firstWorldElement.attributeValue("name"));
        System.out.println("迭代输出-----------------------");

        // 迭代输出
        for (Iterator iter = root.elementIterator(); iter.hasNext();) {
            Element e = (Element) iter.next();
            System.out.println(e.attributeValue("name"));               
        }

        System.out.println("用DOMReader-----------------------");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        // 注意要用完整类名
        org.w3c.dom.Document document2 = db.parse(new File("students.xml "));      
        DOMReader domReader = new DOMReader();

        // 将JAXP的Document转换为dom4j的Document
        Document document3 = domReader.read(document2);               
        Element rootElement = document3.getRootElement();
        System.out.println("Root: " + rootElement.getName());
    }
}



控制台输出:
Root: studentstotal child count: 6hello child: 3first World Attr: name=wangwu迭代输出-----------------------lisilisi2lisi3wangwuwangwu2null用DOMReader-----------------------Root: students


3. 总结到目前为止我们已经用Dom4j完成了生成XML文档以及解析XML文档的操作,相信大家已经对Dom4j有了一定的了解,更复杂的XML只是操作起来步骤更多而已,其思路都是类似的。祝大家学有所成








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2