1、DOM4J概述
DOM4J是一个易用的、开源的库,用于XML XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
DOM4J使用起来非常简单。只要了解基本的XML-DOM模型就能使用。DOM4J最大的特色是使用大量的接口,目前对DOM4J的使用越来越广泛。
DOM4J的主要接口都在org.dom4j这个包里面:
→Attribute:定义了XML的属性。
→Branch:为能够包含子节点的节点,如XML元素(Element)和文档(Document)定义了一个公共的行为。
→CDATA:定义了XML CDATA 区域
→CharacterData:是一个标识接口,标识基于字符的节点,如CDATA,Comment和Text。
→Comment:定义了XML注释的行为。
→Document:定义了XML文档。
→DocumentType:定义XML DOCTYPE 声明。
→Element:定义XML元素。
→ElementHandler:定义了Element对象的处理器。
→ElementPath:
→Entity:
→Node:
→NodeFilter:
2、使用DOM4J操作
要使用DOM4J读写XML文档,需要先下载dom4j包,在DOM4J官方网站下载后将相应的包加入工程就dd可以使用了。
DOM4J解析XML的关键操作总结如下:
(1)、Document对象相关
// 读取XML文件,获取Document对象
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src\\d0910\\NewFile.xml"));
(2)、节点相关
①获取文档的根元素
// 获取文档的根元素
Element root = document.getRootElement();
②取得某个子节点的单个子节点
// 获取某节点的单个子节点
Element member1 = root.element("Student");
Element member11 = member1.element("name");
③取得节点的文字
// 取得节点name的文本
String str = member11.getText();
④取得节点下名为“member”的所有子并进行遍历
// 取得节点下名为“Student”的所有子并进行遍历
List<Element> nodes = root.elements();// 子节点Student的集合
System.out.println("学号\t姓名\t\t班级");
for (Element element : nodes) {
System.out.print(element.element("id").getText() + "\t");
System.out.print(element.element("name").getText() + "\t");
System.out.println(element.element("grade").getText());
}
}
⑤在某节点下添加子节点
// 增加新的节点
Element newStu = document.getRootElement().addElement("Student");
Element newName = newStu.addElement("name");
Element newId = newStu.addElement("id");
Element newGrade = newStu.addElement("grade");
⑥设置节点文字
newName.setText("小马哥");
newId.setText("20156565");
newGrade.setText("20班");
⑦删除某节点
// 删除指定节点
if (element.element("id").getText().equals("20145451")) {
root.remove(element);
// element.remove(element.element("name"));
// element.remove(element.element("id"));
// element.remove(element.element("grade"));
}
⑧添加一个CDATA节点。
.......
(3)、属性相关
①取得属性对象
Attribute a=element.attribute("id");
②取得属性的文本
Attribute a=element.attribute("id");
String str=a.getText();
或者:
String str=element.attributeValue("id");
③设置某节点的属性和文本
Element newId = newStu.addAttribute("id", "20145450");
④设置属性的文本
Attribute a=element.attribute("id");
a.setText("123456");
⑤删除某属性
Attribute a=element.attribute("id");
element.remove(a);
(4)、将文档写入XML文件
①文档中全为英文,不设置编码格式,直接写入。
XMLWriter s = new XMLWriter(new FileOutputStream("src\\d0911\\NewFile.xml"));
s.write(document);
s.close();
②文档中含有中文,设置编码格式再写入。
OutputFormat o=OutputFormat.createPrettyPrint();
o.setEncoding("UTF-8");
XMLWriter s = new XMLWriter(new FileOutputStream("src\\d0911\\NewFile.xml"),o);
s.write(document);
s.close();