Java开发

解析XML文件的方式(五)之DOM4J

2020-02-02  本文已影响0人  风中小酌

DOM4J是一个Java XML的API【需要dom4j.jar】,是对JDOM的升级。

0、要处理的XML文件

<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <book id="1001">
        <name>JAVA 高级编程</name>
        <author>张三</author>
        <price>85.72</price>
    </book>
    <book id="1002">
        <name>C++和C#</name>
        <author>李失失</author>
        <price>125.73</price>
    </book>
</books>

1、DOM4J解析XML步骤

a. 创建SAXReader对象
b. 调用read方法
c. 获取根节点
d. 通过迭代器遍历直接节点

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;

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

public class TestDom4jXml {
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        //a. 创建SAXReader对象
        SAXReader sr = new SAXReader();
        //b. 调用read方法
        Document doc = sr.read(new FileInputStream("src/book.xml"));
        //c. 获取根节点
        Element root = doc.getRootElement();
        //d. 通过迭代器遍历直接节点
        for(Iterator<Element> iter=root.elementIterator();iter.hasNext();){
            Element book = iter.next();
            //获取节点下所有属性
            Iterator<Attribute> arrts = book.attributeIterator();
            //遍历属性信息
            while(arrts.hasNext()){
                Attribute at = arrts.next();
                String name = at.getName();
                String value = at.getValue();
                System.out.println("节点属性:" + name + "\t" + value);
            }
            //遍历节点下子节点
            Iterator<Element> subele = book.elementIterator();
            //获取子节点下所有节点名称和文本值
            while(subele.hasNext()){
                Element node = subele.next();
                System.out.println(node.getName() + "\t" + node.getText());
            }
        }
    }
}

3、输出结果如下

节点属性:id 1001
name    JAVA 高级编程
author  张三
price   85.72
节点属性:id 1002
name    C++和C#
author  李失失
price   125.73
上一篇下一篇

猜你喜欢

热点阅读