此片文章主要写一些关于如何在maven工程中使用dom4j来解析或生成XML的建议方法,实际可使用的写法不仅限于如下所写的样例代码。此处进攻快速入手和提供思路使用。
首先配置pom.xml中的依赖的包
<dependencies> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> <version>1.1.6</version> </dependency> </dependencies>
需要解析的样例XML文件
<?xml version="1.0" encoding="UTF-8" ?> <resources> <product name="QQ"> <account id="123456789"> <nickname>qq-account-1</nickname> <password>qwe123qwe123</password> <level>56</level> </account> <account id="987654321"> <nickname>qq-account-2</nickname> <password>ios9ios9ios9</password> <level>12</level> </account> </product> <product name="Netease"> <account id="tom"> <password>pwdOfTom</password> <capacity>1024</capacity> </account> <account name="Jim"> <password>pwdOfJim</password> <capacity>2560</capacity> </account> </product> </resources>
package com.jeremy; import org.dom4j.*; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.dom4j.xpath.DefaultXPath; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Created by jeremysong on 1/7/2016. */ public class DomParser { public static List<String> parseMethod1() throws DocumentException { List<String> result = new ArrayList<String>(); SAXReader reader = new SAXReader(); Document document = reader.read("E:\\IdeaProjects\\Example\\NetApp\\src\\main\\resources\\target.xml"); XPath xPath = new DefaultXPath("/resources/product[@name='QQ']/account[@id='987654321']/password"); List<Element> list = xPath.selectNodes(document.getRootElement()); for (Element element : list) { System.out.println(element.getTextTrim()); result.add(element.getTextTrim()); } return result; } public static List<String> parseMethod2() throws DocumentException { List<String> result = new ArrayList<String>(); SAXReader reader = new SAXReader(); Document document = reader.read("E:\\IdeaProjects\\Example\\NetApp\\src\\main\\resources\\target.xml"); List<Element> products = document.getRootElement().selectNodes("/resources/product"); Iterator iterator = products.iterator(); while (iterator.hasNext()) { Element product = (Element) iterator.next(); String name = product.attributeValue("name"); System.out.println(name); } return result; } public static void generate() { Document doc = DocumentHelper.createDocument(); Element root = doc.addElement("resources"); Element product = root.addElement("product"); product.addAttribute("name", "QQ"); Element account = product.addElement("account"); account.addAttribute("id", "123456789"); Element nickname = account.addElement("nickname"); nickname.setText("QQ-account-1"); Element password = account.addElement("password"); password.setText("123asd21qda"); Element level = account.addElement("level"); level.setText("56"); PrintWriter pWriter = null; XMLWriter xWriter = null; try { pWriter = new PrintWriter("E:\\IdeaProjects\\Example\\NetApp\\src\\main\\generate.xml"); xWriter = new XMLWriter(pWriter); xWriter.write(doc); } catch (Exception e) { e.printStackTrace(); } finally { try { xWriter.flush(); xWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } }
import com.jeremy.DomParser; import org.dom4j.DocumentException; import org.junit.Test; /** * Created by jeremysong on 1/7/2016. */ public class TestDomParser { @Test public void testParseMethod1() throws DocumentException { DomParser.parseMethod1(); } @Test public void testParseMethod2() throws DocumentException { DomParser.parseMethod2(); } @Test public void testGenerate() { DomParser.generate(); } }
testParseMethod1运行结果
testParseMethod2运行结果
testGenerate运行结果
<?xml version="1.0" encoding="UTF-8"?> <resources> <product name="QQ"> <account id="123456789"> <nickname>QQ-account-1</nickname> <password>123asd21qda</password> <level>56</level> </account> </product> </resources>