DOM4J

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;
	}
}

你可能感兴趣的:(java,xml,dom4j)