欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用DOM4J解析XML

程序员文章站 2022-05-28 21:05:15
...

DOM4j解析XML并非Java官方提供的工具,使用DOM4j解析XML相对简单,你需要引入依赖

<dependency>
     <groupId>dom4j</groupId>
     <artifactId>dom4j</artifactId>
     <version>1.1</version>
</dependency>

 写个简单的测试类测试下,使用到的xml还是之前的demo.xml

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Dom4jParseXml {

    public static void main(String[] args) {
        SAXReader saxReader = new SAXReader();
        try {
            //获取输入流
            //你也可以将demo.xml放在resources目录下,然后通过下面方式获取
            //InputStream resourceAsStream = Dom4jParseXml .class.getClassLoader().getResourceAsStream("demo.xml");
            Document document = saxReader.read(new File("D:/demo.xml"));
            //获取xml根节点
            Element rootElement = document.getRootElement();
            List<Element> elements = rootElement.elements();

            ListIterator<Element> elementListIterator = elements.listIterator();
            while (elementListIterator.hasNext()) {
                Element next = elementListIterator.next();
                List<Attribute> attributes = next.attributes();
                for (Attribute attribute : attributes) {
                    System.out.println(attribute.getName() + ":" + attribute.getValue());
                }
                Iterator iterator = next.elementIterator();
                while (iterator.hasNext()) {
                    Element element1 = (Element) iterator.next();
                    System.out.println(element1.getName() + ":" + element1.getStringValue());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

接着你需要做的就是把解析出来的数据封装在对象里了。输出结果如下

节点名=id,节点值=person1
节点名=name,节点值=simons
节点名=sex,节点值=男
节点名=age,节点值=24
节点名=address,节点值=魔都
节点名=id,节点值=person2
节点名=name,节点值=rose
节点名=sex,节点值=女
节点名=age,节点值=22
节点名=address,节点值=帝都

引申阅读:

使用SAX解析XML:https://blog.csdn.net/fanrenxiang/article/details/81098041

使用JDOM解析XML:https://blog.csdn.net/fanrenxiang/article/details/81100740

使用DOM解析XML:https://blog.csdn.net/fanrenxiang/article/details/81078854