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

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

  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文件

  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类

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

测试类:

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

测试结果:

testParseMethod1运行结果

testParseMethod2运行结果

testGenerate运行结果

    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

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

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

maven中使用dom4j解析、生成XML的简易方法的更多相关文章

  1. Java中使用DOM4J来生成xml文件和解析xml文件

    一.前言 现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有好多种方法,小编觉得还是DOM4J用的最多最广泛也最好理解的吧.小编也是最近需求里遇到了,就来整理 ...

  2. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  3. java中利用dom4j解析XML文件

    官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回Li ...

  4. 编写Java程序,现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示

    查看本章节 查看作业目录 需求说明: 现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示 实现思路: 创建解析 XML 文档类 ParseXML 和窗体类 ...

  5. dom4j 为生成 XML 的文件添加 xmlns(命名空间) 属性

    dom4j 为生成 XML 的文件添加 xmlns(命名空间) 属性 分类: Java2011-06-03 16:14 976人阅读 评论(0) 收藏 举报 xml扩展语言 今天在开发sitemap地 ...

  6. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  7. Python中使用dom模块生成XML文件示例

    在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文件,下一篇文章再继续介绍Dom解析XML文件. 在生成XML文件中,我们主 ...

  8. 在.net中运用HTMLParser解析网页的原理和方法

    本文介绍了.net 版的一个HTMLParser网页解析开源类库(Winista.HTMLParser)的功能特性.工作原理和使用方法.对于使用.net进行Web信息提取的开发人员进行了一次HTMLP ...

  9. 在java中使用dom4j解析xml

    创建xml文档并输出到文件 import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; impor ...

随机推荐

  1. AOSP5.0换8G eMMC不能开机问题

    AOSP5.0 MT6572平台.用H9TP32A4GDBCPR_KGM这颗4G的eMMC就能够.可是用H9TP65A8JDACPR_KGM这个8G的就开不了机,一直是重新启动.用串口抓LOG发现以下 ...

  2. Android之怎样强制横竖屏显示

    2  强制横屏竖屏显示(不依据手机传感器调整) 在清单文件AndroidManifest.xml中 在<activity 里面增加: android:screenOrientation=&quo ...

  3. 在VerilogHDL中调用VHDL的模块

    最近忽然要用到在VerilogHDL中调用VHDL的模块,从网上找了例程,把自己会忘掉的东西记在这里,. 2选1多路复用器的VHDL描述:entity mux2_1 is port( dina : i ...

  4. 170214、mybatis一级和二级缓存

    mybatis一级缓存是指在内存中开辟一块区域,用来保存用户对数据库的操作信息(sql)和数据库返回的数据,如果下一次用户再执行相同的请求, 那么直接从内存中读数数据而不是从数据库读取. 其中数据的生 ...

  5. ASP.Net请求处理机制初步探索之旅 - Part 3 管道(转)

    开篇:上一篇我们了解了一个ASP.Net页面请求的核心处理入口,它经历了三个重要的入口,分别是:ISAPIRuntime.ProcessRequest().HttpRuntime.ProcessReq ...

  6. Oracle Schema Objects——Tables——Overview of Tables

    Oracle Schema Objects Overview of Tables A table is the basic unit of data organization in an Oracle ...

  7. Kafka — 高吞吐量的分布式发布订阅消息系统【转】

    1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件 ...

  8. onchange事件可以使用于: <input>, <select>, 和 <textarea>。

    onchange 事件会在域的内容改变时发生. onchange 事件也可用于单选框与复选框改变后触发的事件.

  9. Linux内核协议栈相关资料链接

    1.Linux内核网络分析(个人博客集合,分析较清晰) http://blog.csdn.net/qy532846454/article/category/1385933/2

  10. flannel相关资料链接

    1.DockOne技术分享(十八):一篇文章带你了解Flannel http://dockone.io/article/618 2.理解Kubernetes网络之flannel网络http://ton ...