本文共 3434 字,大约阅读时间需要 11 分钟。
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的XML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。
Jar包:dom4j-2.0.0-RC1.jar、jaxen-1.1-beta-6.jar(用于XPath)
代码示例:
import java.io.File;import java.io.FileWriter;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import org.junit.Test;/** * Dom4j使用示例 * 创建,修改,删除,解析XML文档 * @author xiayunan * */public class DOM4JDemo { /** * 创建XML文件 * @throws Exception */ @Test public void createXML() throws Exception{ Document document = DocumentHelper.createDocument(); Element root = document.addElement("hibernate-mapping"); Element classElement = root.addElement("class") .addAttribute("name","com.trs.User") .addAttribute("table","wcmuser"); classElement.addElement("property") .addAttribute("name","username") .addText("admin"); classElement.addElement("property") .addAttribute("name","password") .addText("123456"); OutputFormat format = OutputFormat.createPrettyPrint();//创建更漂亮的格式 // 指定文件 XMLWriter writer = new XMLWriter( new FileWriter("User.hbm.xml"),format ); writer.write( document ); writer.close(); } /** * 修改XML文档,改变password的值为12345678 * @throws Exception */ @Test public void updateXML() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File("User.hbm.xml")); /* * 注:XPath使用//hibernate-mapping/class/property[@name='password'] * 和直接使用//property[@name='password']效果是一样的,都是为了选取property元素 * 中属性name值为password的节点的值,这里是为了方便显示层级结构 */ Node node = document.selectSingleNode( "//hibernate-mapping/class/property[@name='password']" ); node.setText("12345678"); OutputFormat format = OutputFormat.createPrettyPrint();//创建更漂亮的格式 // 指定文件 XMLWriter writer = new XMLWriter( new FileWriter("User.hbm.xml"),format ); writer.write(document); writer.close(); } /** * 删除XML节点 * @throws Exception */ @Test public void deleteXml() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File("User.hbm.xml")); Node node = document.selectSingleNode( "//property[@name='password']" ); node.getParent().remove(node); OutputFormat format = OutputFormat.createPrettyPrint();//创建更漂亮的格式 // 指定文件 XMLWriter writer = new XMLWriter( new FileWriter("User.hbm.xml"),format ); writer.write(document); writer.close(); } /** * 解析XML * 获取class元素下所有的property元素的属性和值 * @throws Exception */ @Test public void parseXml() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File("User.hbm.xml")); List生成的XML:nodes = document.selectNodes( "//hibernate-mapping/class/property" ); for(Node node:nodes){ System.out.println(node.getName());//元素的名称 System.out.println(node.valueOf("@name"));//元素name属性的值 System.out.println(node.getText());//元素的文本值 } }}
admin 123456
转载地址:http://sxne.baihongyu.com/