DOM4J详细介绍
1、DOM4J的诞生背景
很多人傻傻分不清DOM4J和JDOM,尤其是它们的名字更让人懵懂。其实,DOM4J与JDOM是同宗同源,而且JDOM是先祖,占据先天优势,所以起了一个好听好写的名字,叫“JDOM”。而DOM4J则是JDOM的后代分支,所以只能起了一个数学和字符夹杂的名字,叫“DOM4J”。
JDOM比DOM更好用,因为它是Java原生的,前文中已经有相关的介绍,只不过因为抛弃了面向接口编程的思想,所以灵活性不足,所以人们又开发了DOM4J。
2、DOM4J的官方网站
3、DOM4J的使用介绍1
因为DOM4J与JDOM同宗同源,所以两者的用法十分相似,下面是DOM4J的入门例子:
3.1、xml文件
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<firstname>Peter</firstname>
<lastname>Brown</lastname>
<occupation>programmer</occupation>
</user>
<user id="2">
<firstname>Martin</firstname>
<lastname>Smith</lastname>
<occupation>accountant</occupation>
</user>
<user id="3">
<firstname>Lucy</firstname>
<lastname>Gordon</lastname>
<occupation>teacher</occupation>
</user>
</users>
3.2、DOM4J的代码例子
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4j {
public static void main(String[] args) throws DocumentException {
SAXReader sax = new SAXReader();
File file = new File("src/main/resources/dom2.xml");
Document document = sax.read(file);
Element root = document.getRootElement();
List<Element> users = root.elements("user");
for (Element user : users) {
String id = user.attributeValue("id");
if (id != null) {
System.out.println("id=" + user.attributeValue("id"));
}
List<Element> firstname = user.elements("firstname");
for (Element name : firstname) {
System.out.println("firstname:" + name.getText());
}
List<Element> lastname = user.elements("lastname");
for (Element name : lastname) {
System.out.println("lastname:" + name.getText());
}
List<Element> occupation = user.elements("occupation");
for (Element job : occupation) {
System.out.println("toccupation:" + job.getText());
}
System.out.println("================================================");
}
}
}
4、DOM4J的使用小结
DOM4J常用的类有两个,学习成本非常低:
import org.dom4j.Document;
import org.dom4j.Element;
DOM4J常用的方法有四个:
(1)获取根节点
Element root = document.getRootElement();
(2)通过根节点获取子节点
List<Element> users = root.elements("user");
(3)获取子节点的属性值
user.attributeValue("id")
(4)获取子节点的文本值
name.getText()