• maven中使用dom4j解析、生成XML的简易方法


    此片文章主要写一些关于如何在maven工程中使用dom4j来解析或生成XML的建议方法,实际可使用的写法不仅限于如下所写的样例代码。此处进攻快速入手和提供思路使用。

    首先配置pom.xml中的依赖的包

    [html] view plain copy
     
    1. <dependencies>  
    2.     <dependency>  
    3.         <groupId>dom4j</groupId>  
    4.         <artifactId>dom4j</artifactId>  
    5.         <version>1.6.1</version>  
    6.     </dependency>  
    7.     <dependency>  
    8.         <groupId>junit</groupId>  
    9.         <artifactId>junit</artifactId>  
    10.         <version>4.11</version>  
    11.     </dependency>  
    12.     <dependency>  
    13.         <groupId>jaxen</groupId>  
    14.         <artifactId>jaxen</artifactId>  
    15.         <version>1.1.6</version>  
    16.     </dependency>  
    17. </dependencies>  


    上述配置中jaxen的包主要在使用Xpath时会被用到。

    需要解析的样例XML文件

    [html] view plain copy
     
    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <resources>  
    3.     <product name="QQ">  
    4.         <account id="123456789">  
    5.             <nickname>qq-account-1</nickname>  
    6.             <password>qwe123qwe123</password>  
    7.             <level>56</level>  
    8.         </account>  
    9.         <account id="987654321">  
    10.             <nickname>qq-account-2</nickname>  
    11.             <password>ios9ios9ios9</password>  
    12.             <level>12</level>  
    13.         </account>  
    14.     </product>  
    15.     <product name="Netease">  
    16.         <account id="tom">  
    17.             <password>pwdOfTom</password>  
    18.             <capacity>1024</capacity>  
    19.         </account>  
    20.         <account name="Jim">  
    21.             <password>pwdOfJim</password>  
    22.             <capacity>2560</capacity>  
    23.         </account>  
    24.     </product>  
    25. </resources>  


    解析的java类

    [java] view plain copy
     
    1. package com.jeremy;  
    2.   
    3. import org.dom4j.*;  
    4. import org.dom4j.io.SAXReader;  
    5. import org.dom4j.io.XMLWriter;  
    6. import org.dom4j.xpath.DefaultXPath;  
    7.   
    8. import java.io.IOException;  
    9. import java.io.PrintWriter;  
    10. import java.util.ArrayList;  
    11. import java.util.Iterator;  
    12. import java.util.List;  
    13.   
    14. /** 
    15.  * Created by jeremysong on 1/7/2016. 
    16.  */  
    17. public class DomParser  
    18. {  
    19.     public static List<String> parseMethod1() throws DocumentException  
    20.     {  
    21.         List<String> result = new ArrayList<String>();  
    22.   
    23.         SAXReader reader = new SAXReader();  
    24.         Document document = reader.read("E:\IdeaProjects\Example\NetApp\src\main\resources\target.xml");  
    25.         XPath xPath = new DefaultXPath("/resources/product[@name='QQ']/account[@id='987654321']/password");  
    26.         List<Element> list = xPath.selectNodes(document.getRootElement());  
    27.         for (Element element : list)  
    28.         {  
    29.             System.out.println(element.getTextTrim());  
    30.             result.add(element.getTextTrim());  
    31.         }  
    32.         return result;  
    33.     }  
    34.   
    35.     public static List<String> parseMethod2() throws DocumentException  
    36.     {  
    37.         List<String> result = new ArrayList<String>();  
    38.   
    39.         SAXReader reader = new SAXReader();  
    40.         Document document = reader.read("E:\IdeaProjects\Example\NetApp\src\main\resources\target.xml");  
    41.         List<Element> products = document.getRootElement().selectNodes("/resources/product");  
    42.         Iterator iterator = products.iterator();  
    43.         while (iterator.hasNext())  
    44.         {  
    45.             Element product = (Element) iterator.next();  
    46.             String name = product.attributeValue("name");  
    47.             System.out.println(name);  
    48.         }  
    49.         return result;  
    50.     }  
    51.   
    52.     public static void generate()  
    53.     {  
    54.         Document doc = DocumentHelper.createDocument();  
    55.         Element root = doc.addElement("resources");  
    56.   
    57.         Element product = root.addElement("product");  
    58.         product.addAttribute("name", "QQ");  
    59.   
    60.         Element account = product.addElement("account");  
    61.         account.addAttribute("id", "123456789");  
    62.   
    63.         Element nickname = account.addElement("nickname");  
    64.         nickname.setText("QQ-account-1");  
    65.   
    66.         Element password = account.addElement("password");  
    67.         password.setText("123asd21qda");  
    68.   
    69.         Element level = account.addElement("level");  
    70.         level.setText("56");  
    71.   
    72.         PrintWriter pWriter = null;  
    73.         XMLWriter xWriter = null;  
    74.         try  
    75.         {  
    76.             pWriter = new PrintWriter("E:\IdeaProjects\Example\NetApp\src\main\generate.xml");  
    77.             xWriter = new XMLWriter(pWriter);  
    78.             xWriter.write(doc);  
    79.         } catch (Exception e)  
    80.         {  
    81.             e.printStackTrace();  
    82.         } finally  
    83.         {  
    84.             try  
    85.             {  
    86.                 xWriter.flush();  
    87.                 xWriter.close();  
    88.             } catch (IOException e)  
    89.             {  
    90.                 e.printStackTrace();  
    91.             }  
    92.         }  
    93.     }  
    94. }  

    测试类:

    [java] view plain copy
     
    1. import com.jeremy.DomParser;  
    2. import org.dom4j.DocumentException;  
    3. import org.junit.Test;  
    4.   
    5. /** 
    6.  * Created by jeremysong on 1/7/2016. 
    7.  */  
    8. public class TestDomParser  
    9. {  
    10.     @Test  
    11.     public void testParseMethod1() throws DocumentException  
    12.     {  
    13.         DomParser.parseMethod1();  
    14.     }  
    15.   
    16.     @Test  
    17.     public void testParseMethod2() throws DocumentException  
    18.     {  
    19.         DomParser.parseMethod2();  
    20.     }  
    21.   
    22.     @Test  
    23.     public void testGenerate()  
    24.     {  
    25.         DomParser.generate();  
    26.     }  
    27. }  


    测试结果:

    testParseMethod1运行结果



    testParseMethod2运行结果

    testGenerate运行结果

    [html] view plain copy
     
      1. <?xml version="1.0" encoding="UTF-8"?>  
      2. <resources>  
      3.     <product name="QQ">  
      4.         <account id="123456789">  
      5.             <nickname>QQ-account-1</nickname>  
      6.             <password>123asd21qda</password>  
      7.             <level>56</level>  
      8.         </account>  
      9.     </product>  
      10. </resources>  

    引用原文:https://blog.csdn.net/jeremysong88/article/details/50479924

    写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,文章可以转载,无需版权。希望尽自己的努力,做到更好,大家一起努力进步!

    如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!

  • 相关阅读:
    全网最详细的Windows系统里PLSQL Developer 64bit安装之后的一些配置(图文详解)
    全网最详细的Windows系统里PLSQL Developer 32bit的下载与安装过程(图文详解)
    全网最详细的Windows系统里PLSQL Developer 64bit的下载与安装过程(图文详解)
    全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)
    全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来定时任务apscheduler库(图文详解)
    全网最全的Windows下Python2 / Python3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)
    全网最详细的用pip安装****模块报错:Could not find a version that satisfies the requirement ****(from version:) No matching distribution found for ****的解决办法(图文详解)
    全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)
    全网最详细的U盘被损坏导致一般性的软件无法修复的解决办法(必须可以)(图文详解)
    [转]Windows10中Virtualbox没办法选择和安装64位的Linux系统
  • 原文地址:https://www.cnblogs.com/summary-2017/p/8626295.html
Copyright © 2020-2023  润新知