XML的解析方式4——DOM4J方式解析


参考 四种生成和解析XML文档的方法详解

XML的解析方式

DOM解析

SAX解析

JDOM解析

DOM4J解析

【优点】

  1. 大量使用了Java集合类,方便Java开发人员,同时提供一些提高性能的替代方法。
  2. 支持XPath。
  3. 有很好的性能。

【缺点】
4. 大量使用了接口,API较为复杂

代码示例

  1. XmlDocument接口
package com.vincient.test;

/**
 * @Author: Vincient
 * @Description:
 * @Date: 2018/十月/30
 **/
public interface XmlDocument {
    public void parseXml(String fileName);
}

  1. Dom4jDemo类
package com.vincient.test;

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

import java.io.File;
import java.util.Iterator;

/**
 * @Author: Vincient
 * @Description:
 * @Date: 2018/十一月/02
 **/
public class Dom4jDemo implements XmlDocument {
    @Override
    public void parseXml(String fileName) {
        File inputXml = new File(fileName);
        SAXReader saxReader = new SAXReader();
        try {
            Document document = saxReader.read(inputXml);
            Element users = document.getRootElement();
            for (Iterator i = users.elementIterator(); i.hasNext(); ) {
                Element user = (Element) i.next();
                for (Iterator j = user.elementIterator(); j.hasNext(); ) {
                    Element node = (Element) j.next();
                    System.out.println(node.getName() + ":" + node.getText());
                }
                System.out.println();
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Dom4jDemo dom4jDemo = new Dom4jDemo();
        dom4jDemo.parseXml("文件uri");
    }
}
  1. user.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user id="0">
        <name>Alexia</name>
        <age>23</age>
        <sex>Female</sex>
    </user>
    <user id="1">
        <name>Edward</name>
        <age>24</age>
        <sex>Male</sex>
    </user>
    <user id="2">
        <name>wjm</name>
        <age>23</age>
        <sex>Female</sex>
    </user>
    <user id="3">
        <name>wh</name>
        <age>24</age>
        <sex>Male</sex>
    </user>
</users>
  1. 执行结果
name:Alexia
age:23
sex:Female

name:Edward
age:24
sex:Male

name:wjm
age:23
sex:Female

name:wh
age:24
sex:Male


猜你喜欢

转载自blog.csdn.net/weixin_42908976/article/details/83658942