DOM4J

本文详细介绍了如何使用DOM4J进行XML文件的操作,包括下载、集成开发环境配置、编写测试程序及XML文件生成等步骤。重点展示了两种获取节点与属性的方法,并通过实例演示了如何使用DOM4J进行XML解析。
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;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值