maven中使用dom4j解析、生成XML的简易方法
此片文章主要写一些关于如何在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>
上述配置中jaxen的包主要在使用Xpath时会被用到。
需要解析的样例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>
解析的java类
- 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>
引用原文:https://blog.csdn.net/jeremysong88/article/details/50479924
写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,文章可以转载,无需版权。希望尽自己的努力,做到更好,大家一起努力进步!
如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!
maven中使用dom4j解析、生成XML的简易方法的更多相关文章
- Java中使用DOM4J来生成xml文件和解析xml文件
一.前言 现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有好多种方法,小编觉得还是DOM4J用的最多最广泛也最好理解的吧.小编也是最近需求里遇到了,就来整理 ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- java中利用dom4j解析XML文件
官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回Li ...
- 编写Java程序,现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示
查看本章节 查看作业目录 需求说明: 现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示 实现思路: 创建解析 XML 文档类 ParseXML 和窗体类 ...
- dom4j 为生成 XML 的文件添加 xmlns(命名空间) 属性
dom4j 为生成 XML 的文件添加 xmlns(命名空间) 属性 分类: Java2011-06-03 16:14 976人阅读 评论(0) 收藏 举报 xml扩展语言 今天在开发sitemap地 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- Python中使用dom模块生成XML文件示例
在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文件,下一篇文章再继续介绍Dom解析XML文件. 在生成XML文件中,我们主 ...
- 在.net中运用HTMLParser解析网页的原理和方法
本文介绍了.net 版的一个HTMLParser网页解析开源类库(Winista.HTMLParser)的功能特性.工作原理和使用方法.对于使用.net进行Web信息提取的开发人员进行了一次HTMLP ...
- 在java中使用dom4j解析xml
创建xml文档并输出到文件 import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; impor ...
随机推荐
- linux配置sftp用户的chroot步骤(用户的sftp根文件夹)
1.编辑ssh中的sftp的配置,命令可能是:vi /etc/ssh/sshd_config 在这个文件里最后增加 #限制sftp组的用户使用sftp时在自己的home文件夹下 Match Group ...
- 面试题思考:java中快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exceptio ...
- 浅述python中range()函数的用法
函数用法说明: 用法一:range(m) 输出: [0,1,...,m-1](从0到m-1的一个list,不包括m) 示例: 用法二:range(m,n),m<n 输出:[m,m+1,..,n- ...
- std::function(3)
#include <functional> #include <string> #include <iostream> using namespace std; v ...
- 【BZOJ4557】[JLoi2016]侦察守卫 树形DP
[BZOJ4557][JLoi2016]侦察守卫 Description 小R和B神正在玩一款游戏.这款游戏的地图由N个点和N-1条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地 ...
- ORA-12505, TNS:listener does not currently know of SID given in connect desc
数据库名(数据库服务名)配置错误.
- Python IDLE或shell中切换路径
在Python自带的编辑器IDLE中或者python shell中不能使用cd命令,那么跳到目标路径呢.方法是使用os包下的相关函数实现路径切换功能. import os os.getcwd() # ...
- Storm-源码分析汇总
Storm Features Storm 简介 Storm Topology的并发度 Storm - Guaranteeing message processing Storm - Transacti ...
- Java 语言基础之数组(一)
数组定义及格式: 数组: 同一种类型数据的集合, 就是一个容器 定义数组格式1: 元素类型[] 数组名 = new 元素类型[元素个数(即数组长度)]; 说明: 数组是一个容器.而容器属于一个实体,实 ...
- QStorageInfo获取磁盘信息(非常详细)
QStorageInfo类提供了系统当前挂载的存储和驱动器的相关信息,包括它们的空间,挂载点,标签名,文件系统名. 一般,我们可以使用特定的文件或目录来创建一个QStorageInfo类的对象,也可以 ...