一、Dom4j API生成xml文件

  @Test
public void bulidXmlByDom4j(){
//创建document对象
Document document = DocumentHelper.createDocument();
//设置xml文档编码
document.setXMLEncoding("UTF-8");
//创建root根节点
Element root = DocumentHelper.createElement("root");
root.addAttribute("version","1.0");
//创建head节点
Element header = DocumentHelper.createElement("header");
//设置节点的属性
header.addAttribute("version","1.0");
//设置子节点 (子节点无属性时,可直接用addElement创建)
Element element_header1 = header.addElement("timestamp");
//设置子节点的内容
element_header1.setText("20190122");
Element element_header2 = header.addElement("username");
element_header2.setText("yangsj");
Element element_header3 = header.addElement("password");
element_header3.setText("root"); //创建body节点
Element body = DocumentHelper.createElement("body");
body.addAttribute("version","1.0");
//创建action节点
Element action = DocumentHelper.createElement("action");
//创建action的子节点
Element action_option = DocumentHelper.createElement("option");
action_option.addAttribute("name","url");
action_option.addAttribute("value","http://127.0.0.1");
action.add(action_option); //创建data 节点
Element data = DocumentHelper.createElement("data");
Element dataField = DocumentHelper.createElement("field");
dataField.addAttribute("name","money");
dataField.addAttribute("value","10000");
data.add(dataField); body.add(action);
body.add(data); root.add(header);
root.add(body);
document.add(root);
String xml = document.asXML(); System.out.println(xml);
}

  执行结果

<?xml version="1.0" encoding="UTF-8"?>
<root version="1.0">
<header version="1.0">
<timestamp>20190122</timestamp>
<username>yangsj</username>
<password>root</password>
</header>
<body version="1.0">
<action>
<option name="url" value="http://127.0.0.1"/>
</action>
<data>
<field name="money" value="10000"/>
</data>
</body>
</root>

二、Dom4j 解析xml

@Test
public void readXmlInfo() throws DocumentException {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root version=\"1.0\"><body " +
"version=\"1.0\"><action><option name=\"url\" value=\"http://127.0.0.1\"/></action><data><field name=\"money\" value=\"10000\"/></data></body><header version=\"1.0\"><timestamp>20190122</timestamp><username>yangsj</username><password>root</password></header></root>"; Map<String,String> headerMap = new HashMap<>();
Map<String,String> actionMap = new HashMap<>();
Map<String,String> dataMap = new HashMap<>(); Document document = DocumentHelper.parseText(xml);
// 获取根元素
Element root = document.getRootElement();
//遍历根元素
for (Iterator iter = root.elementIterator(); iter.hasNext();){
Element element = (Element) iter.next();
//遍历header节点
if("header".equalsIgnoreCase(element.getName())){
for(Iterator i = element.elementIterator(); i.hasNext();){
Element headerElement = (Element) i.next();
headerMap.put(headerElement.getName(),headerElement.getTextTrim());
}
}
//遍历body节点
if("body".equalsIgnoreCase(element.getName())){
for (Iterator j = element.elementIterator(); j.hasNext();){
Element bodyElement = (Element) j.next();
//遍历action节点
if ("action".equalsIgnoreCase(bodyElement.getName())){
for (Iterator k = bodyElement.elementIterator(); k.hasNext();){
Element actionElement = (Element) k.next();
//获取节点的属性值
String name = actionElement.attributeValue("name");
String value = actionElement.attributeValue("value");
actionMap.put(name,value);
}
}
//遍历data节点
if ("data".equalsIgnoreCase(bodyElement.getName())){
for (Iterator k = bodyElement.elementIterator(); k.hasNext();){
Element actionElement = (Element) k.next();
//获取节点的属性值
String name = actionElement.attributeValue("name");
String value = actionElement.attributeValue("value");
dataMap.put(name,value);
}
}
}
} } headerMap.forEach((x,y)->System.out.println("name :" + x + " value :" + y));
System.out.println("------------------------------------");
actionMap.forEach((x,y)->System.out.println("name :" + x + " value :" + y));
System.out.println("------------------------------------");
dataMap.forEach((x,y)->System.out.println("name :" + x + " value :" + y)); }

三、执行结果

name :password value :root
name :timestamp value :20190122
name :username value :yangsj
------------------------------------
name :url value :http://127.0.0.1
------------------------------------
name :money value :10000

Dom4j入门的更多相关文章

  1. Java从入门到精通——技巧篇之利用dom4j取出XML文件中的数据

    在我们做项目的时候会经常用到XML文件用来配置系统,XML让系统更加的具有了灵活性,Java如何从XML中取出我们想要的数据呢?下面是我利用DOM4J来实现取出XML文件中的数据. XML文件 < ...

  2. 浅谈Hibernate入门

    前言 最近打算做一个自己的个人网站,经过仔细思考,打算使用hibernate作为开发的ORM框架,因此各种找资料,由于本人是刚刚接触这技术的,所以就找了比较基础的知识来分享下 基本概述 Hiberna ...

  3. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

  4. 【JAVA与DOM4J实现对XML文档的CRUD操作】

    一.简介 1.网上下载DOM4J 1.6.1压缩包,解压开之后,发现几个目录和一个jar文件,jar文件是必须的文件其它目录: docs目录:帮助文档的目录,单击index.html: Quick s ...

  5. dom4j API使用简介

    dom4j API使用简介 功能简介 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极 ...

  6. XML学习笔记(2)--dom4j操作XML

    1. 介绍(四种方式的比较这部分转载自:http://www.blogjava.net/xcp/archive/2010/02/12/312617.html) 1)DOM(JAXP Crimson解析 ...

  7. 07_XPath_01_入门

    [工程截图] [person.xml] <?xml version="1.0" encoding="UTF-8"?> <students> ...

  8. Dom4j的使用(全而好的文章)

        版权声明: 本文由冰云完成,首发于CSDN,未经许可,不得使用于任何商业用途. 文中代码部分引用自DOM4J文档. 欢迎转载,但请保持文章及版权声明完整. 如需联络请发邮件:icecloud( ...

  9. java使用dom4j和XPath解析XML与.net 操作XML小结

    最近研究java的dom4j包,使用 dom4j包来操作了xml 文件 包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), ...

随机推荐

  1. 掉电脉冲映射串口log和dmesg到文件中的log

    1.echo 1 > /mytest/boot_times 2.systemctl enable i2c_dmesg.service root:/mytest# tree . |-- boot_ ...

  2. opencrud graphql 数据操作指南

    opencrud 是社区团队提出,同时prisma框架就是按照这个标准设计的,里面包含了对于graphql 数据 操作的最佳实践,目前还在完善中,但是设计以及指南覆盖的功能还是比较全的,如果用过 pr ...

  3. PhoneGap 获得APP的VersionName

    1.首先安装cordova-plugin-app-version cordova plugin add cordova-plugin-app-version 2. 调用方法如下 function ge ...

  4. Oracle中的一连接语句

    首先构建场景 相应表中数据如下: SELECT * FROM EMPLOYEE: SELECT * FROM DEPTINFO; 连接方式: 1. , SELECT E.EMPNAME, D.DEPN ...

  5. VS2010 C++环境下DLL和LIB文件的生成与调试 备忘

    利用VS2010工具,调试DLL文件的方法现总结如下: 在一个解决方案中生成两个工程,假设MYDLL和MYDLG两个工程,前者是DLL工程,后者DLG调用前边的DLL工程.设置如下: 目录如下:图,本 ...

  6. Django将.csv文件(excel文件)显示到网页上

    今天,我成功将项目要导入的测试数据导入并呈现了,虽然还不是很完美,但我之后仍会继续改进. 1.首先在主页面上加一个超链接按钮: 其它的不需要管,其它是我的另一个项目,没什么大用的 2.之后配置URL: ...

  7. Codeforces Round #474-E(树形dp)

    一.题目链接 http://codeforces.com/contest/960/problem/B 二.题意 给定一棵$N$个节点的树,每个节点的权值$V$.定义树中两点$u_1$和$u_m$的权值 ...

  8. C++实现大正整数及其相关运算(长期更新)

    /** 只考虑正数[1, +∞); “-”运算只允许大数减小数; 小端存储: */ typedef struct BigInteger0 { vector<int> v; BigInteg ...

  9. 372. Super Pow.txt

    ▶ 指数取模运算 ab % m ▶ 参考维基 https://en.wikipedia.org/wiki/Modular_exponentiation,给了几种计算方法:暴力计算法,保存中间结果法(分 ...

  10. jsp 学习 第1步 - 引入 jstl

    通过 eclipse 新建 动态web项目  默认是没有引入 jstl, 则无法JSP页面引入相关标记. <%@ taglib prefix="c" uri="ht ...