DOM4J学习笔记
一、 下载dom4j的文件
二、 在集成开发环境上布置dom4j
加入F:\Program Files\dom4j-1.6.1\dom4j-1.6.1.jar
三、 建立测试文件dom4jTest.xml
<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping>
<class name="cn.edu.hpu" table="t_user">
<property name="username"></property>
<property name="password"></property>
</class>
</hibernate-mapping>
四、 编写测试程序Dom4jTest.java(第一种获得节点与属性的方法)
package cn.edu.hpu;
import java.io.File;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
public class Dom4jTest {
public static void main(String[] args) {
//建立SAXReader对象
SAXReader reader = new SAXReader();
Document document = null;
try {
//获得文档的Document的对象
document = reader.read(new File("dom4jTest.xml"));
} catch (DocumentException e) {
e.printStackTrace();
}
//获得根标签
Element rootElement = document.getRootElement();
System.out.println(rootElement.getName());
//OUTPUT_RESULT:hibernate-mapping
/***********第一种获得节点和属性的方法,使用的比较少***********/
for(Iterator it = rootElement.elementIterator(); it.hasNext();) {
//获得根标签的子标签
Element element = (Element)it.next();
System.out.println(element.getName());
//OUTPUT_RESULT:class
for(Iterator it1 = element.attributeIterator(); it1.hasNext();) {
Attribute attribute = (Attribute)it1.next();
System.out.println(attribute.getName() + "-" + attribute.getValue());
//OUTPUT_RESULT:name-cn.edu.hpu table-t_user
}
}
/***********第一种获得节点和属性的方法,使用的比较少***********/
}
}
五、 第二种获得节点与属性的方法(XPATH)
此处需要加入第二个文件F:\Program Files\dom4j-1.6.1\lib\jaxen-1.1-beta-6.jar
添加测试程序段:
/***********第二种获得节点和属性的方法,使用的比较多***********/
//使用xpath进行获取节点,下面语句表示拿出此path下所有property节点
List<Node> nodes = document.selectNodes("//hibernate-mapping/class/property");
for(Node node : nodes) {
System.out.println(node.getName());
//OUTPUT_RESULT:property property
//此处表示取出node中名为name的属性值
System.out.println(node.valueOf("@name"));
//OUTPUT_RESULT:username password
}
//获得单个节点
Node node = document.selectSingleNode("//hibernate-mapping/class/property");
System.out.println(node.getName());
//OUTPUT_RESULT:property
/***********第二种获得节点和属性的方法,使用的比较多***********/
六、 XML文件的生成
package cn.edu.hpu;
import java.io.FileWriter;
import org.dom4j.*;
import org.dom4j.io.*;
public class BuildXML {
public static void main(String[] args) throws Exception {
createXML();
}
public static Document createXML() throws Exception {
//创建Document对象
Document document = DocumentHelper.createDocument();
//加入根节点
Element root = document.addElement("hibernate-mapping");
//加入其它的节点与属性
Element classNode = root.addElement("class")
.addAttribute("name", "cn.edu.hpu")
.addAttribute("table", "t-user");
classNode.addElement("property").addAttribute("name", "username");
//文件的输出,此处输出的文件格式不好
/*FileWriter fWriter = new FileWriter("create.XML");
document.write(fWriter);
fWriter.flush();
fWriter.close();*/
//使用XMLWriter对象进行输出,得到比较标准的格式
//创建相应的输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
//创建XMLWriter对象
XMLWriter fWriter = new XMLWriter(new FileWriter("create.XML") , format);
fWriter.write(document);
fWriter.close();
return document;
}
}