解析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