DOM4J解析XML
参考 四种生成和解析XML文档的方法详解
XML的解析方式
DOM解析
SAX解析
JDOM解析
DOM4J解析
【优点】
- 大量使用了Java集合类,方便Java开发人员,同时提供一些提高性能的替代方法。
- 支持XPath。
- 有很好的性能。
【缺点】
4. 大量使用了接口,API较为复杂
代码示例
- XmlDocument接口
package com.vincient.test;
/**
* @Author: Vincient
* @Description:
* @Date: 2018/十月/30
**/
public interface XmlDocument {
public void parseXml(String fileName);
}
- 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");
}
}
- 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>
- 执行结果
name:Alexia
age:23
sex:Female
name:Edward
age:24
sex:Male
name:wjm
age:23
sex:Female
name:wh
age:24
sex:Male