java XML解析成Map
1.需要解析的文件.xml
<?xml version="1.0" encoding="UTF-8"?>
<request>
<realName>test</realName>
<identityNumber>411525152242417185276</identityNumber>
<phone>1314456788</phone>
<user>
<value>1444444</value>
<name>12334</name>
<aa>
<hehe>222222</hehe>
</aa>
<age>23</age>
</user>
</request>
2.工具包
package com.ynet.utils; import org.dom4j.Document;
import org.dom4j.Element; import java.util.*; /**
* Created by Arya on 2017/11/3.
*/
public class XmlUtils {
public static Map<String, Object> Dom2Map(Document doc) {
Map<String, Object> map = new HashMap<String, Object>();
if (doc == null)
return map;
Element root = doc.getRootElement();
for (Iterator iterator = root.elementIterator(); iterator.hasNext(); ) {
Element e = (Element) iterator.next();
List list = e.elements();
if (list.size() > 0) {
map.put(e.getName(), Dom2Map(e));
} else
map.put(e.getName(), e.getText());
}
return map;
} public static Map Dom2Map(Element e) {
Map map = new HashMap();
List list = e.elements();
if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
Element iter = (Element) list.get(i);
List mapList = new ArrayList(); if (iter.elements().size() > 0) {
Map m = Dom2Map(iter);
if (map.get(iter.getName()) != null) {
Object obj = map.get(iter.getName());
if (!obj.getClass().getName().equals("java.util.ArrayList")) {
mapList = new ArrayList();
mapList.add(obj);
mapList.add(m);
}
if (obj.getClass().getName().equals("java.util.ArrayList")) {
mapList = (List) obj;
mapList.add(m);
}
map.put(iter.getName(), mapList);
} else
map.put(iter.getName(), m);
} else {
if (map.get(iter.getName()) != null) {
Object obj = map.get(iter.getName());
if (!obj.getClass().getName().equals("java.util.ArrayList")) {
mapList = new ArrayList();
mapList.add(obj);
mapList.add(iter.getText());
}
if (obj.getClass().getName().equals("java.util.ArrayList")) {
mapList = (List) obj;
mapList.add(iter.getText());
}
map.put(iter.getName(), mapList);
} else
map.put(iter.getName(), iter.getText());
}
}
} else
map.put(e.getName(), e.getText());
return map;
}
}
3.控制器
package com.ynet.controller; import com.ynet.utils.XmlUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.dom4j.DocumentException; import java.io.FileInputStream;
import java.io.IOException;
import java.util.Map; /**
* Created by Arya on 2017/11/3.
*/
@RestController
@EnableAutoConfiguration
public class XmlDemoController {
@RequestMapping(value="/xmlDemo")
public Map<String, Object> xmlDocumentFile(){
Document doc = null;
try {
FileInputStream fis = new FileInputStream("F:\\myweb\\gateway\\gateway2\\src\\main\\resources\\customer.xml");
byte[] b = new byte[fis.available()];
fis.read(b);
String str = new String(b);
doc = DocumentHelper.parseText(str);
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} return XmlUtils.Dom2Map(doc);
}
}
4.postman测试结果
java XML解析成Map的更多相关文章
- Dom4j把xml转换成Map(固定格式)
/** * 可解析list * * @param fileName * @return * @throws Exception */ @SuppressWarnings("unchecked ...
- Dom4j把xml转换成Map(非固定格式)
将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...
- Java XML解析器
使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
- Oracle使用Sql把XML解析成表(Table)的方法
SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING XMLTYPE('<?xml version="1.0&qu ...
- 将多层级xml解析为Map
/** * 解析xml的工具类 * 1.将多层级xml解析为Map */ public class ParseXmlUtil { public static final String TAG = &q ...
- xml转换成map
import java.io.IOException;import java.io.StringReader;import java.util.ArrayList;import java.util.H ...
- Java xml 解析
1. XML框架结构 Java SE 6 平台提供的 XML 处理主要包括两个功能:XML 处理(JAXP,Java Architecture XML Processing)和 XML 绑定(JAXB ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
随机推荐
- Window 7 Professional 多语言设置
1. 正常情况下,WINDOW系统只提供企业和旗舰版的语言切换的界面设置,其他版本没有. 2. 首先下载语言包,然后解压待用. 3. 以管理员身份运行命令窗口,如下输入: 4. 上面完成后,下载 ht ...
- Linux 运维工程师经典面试题合集(不断更新中 ...)
写在前面的话 做运维以来,关注了很多关于互联网技术,培训等乱七八糟的公众号,时不时的就会推一些各种公司的面试题过来. 大致看了一下,发现自己很多知识要么遗忘了,要么很难说出个所以然,所以这里对那些个人 ...
- 《javascript 高级程序设计》 笔记1 1~7章
chapter 2 在html中使用JavaScript chapter 3 基本概念 EMCAscript 语法 变量,函数名和操作符都区分大小写. 使用var定义的变量将成为定义该变量的作用域中的 ...
- 借助百度云API进行人脸识别
前言:本篇博客是笔者第一次使用百度云api进行人脸检测,主要内容包括两部分,一是获取接口,二是借助接口进行人脸检测.笔者也是初步了解这方面的内容,也是参考了杂七杂八的博文,内容可能存在错误及其他毛病, ...
- 详细grep、sed、awk
[root@VM_0_7_centos tmp]# cat 1.txt 1 2 3 4 5 6 [root@VM_0_7_centos tmp]# cat 2.txt 4 5 6 7 8 [root@ ...
- [Swift]八大排序算法(八):基数排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- SJTU 机试 最小面积子矩阵 压缩+双指针
链接:https://www.nowcoder.com/questionTerminal/8ef506fbab2742809564e1a288358554来源:牛客网 一个N*M的矩阵,找出这个矩阵中 ...
- springboot整合mybatis,redis,代码(二)
一 说明: springboot整合mybatis,redis,代码(一) 这个开发代码的复制粘贴,可以让一些初学者直接拿过去使用,且没有什么bug 二 对上篇的说明 可以查看上图中文件: 整个工程包 ...
- 【Leedcode】Insertion Sort List
Sort a linked list using insertion sort. /** * Definition for singly-linked list. * struct ListNode ...
- tornado 05 模块继承
tornado 05 模块继承 一.模板继承 #问题:在浏览网页的时候,很多页面上很多部分其实是重复的,那这些部分在每个页面都去写一次吗? #不是,这只不过是通过继承实现的 #模板继承 #在字模板中写 ...