博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dom4j解析XML
阅读量:373 次
发布时间:2019-03-04

本文共 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
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());//元素的文本值 } }}
生成的XML

admin
123456

转载地址:http://sxne.baihongyu.com/

你可能感兴趣的文章