java XML解析成Map

1.需要解析的文件.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <request>
 3     <realName>test</realName>
 4     <identityNumber>411525152242417185276</identityNumber>
 5     <phone>1314456788</phone>
 6     <user>
 7         <value>1444444</value>
 8         <name>12334</name>
 9             <aa>
10                 <hehe>222222</hehe>
11             </aa>
12         <age>23</age>
13     </user>
14 </request>

2.工具包

 1 package com.ynet.utils;
 2
 3 import org.dom4j.Document;
 4 import org.dom4j.Element;
 5
 6 import java.util.*;
 7
 8 /**
 9  * Created by Arya on 2017/11/3.
10  */
11 public class XmlUtils {
12     public static Map<String, Object> Dom2Map(Document doc) {
13         Map<String, Object> map = new HashMap<String, Object>();
14         if (doc == null)
15             return map;
16         Element root = doc.getRootElement();
17         for (Iterator iterator = root.elementIterator(); iterator.hasNext(); ) {
18             Element e = (Element) iterator.next();
19             List list = e.elements();
20             if (list.size() > 0) {
21                 map.put(e.getName(), Dom2Map(e));
22             } else
23                 map.put(e.getName(), e.getText());
24         }
25         return map;
26     }
27
28
29     public static Map Dom2Map(Element e) {
30         Map map = new HashMap();
31         List list = e.elements();
32         if (list.size() > 0) {
33             for (int i = 0; i < list.size(); i++) {
34                 Element iter = (Element) list.get(i);
35                 List mapList = new ArrayList();
36
37                 if (iter.elements().size() > 0) {
38                     Map m = Dom2Map(iter);
39                     if (map.get(iter.getName()) != null) {
40                         Object obj = map.get(iter.getName());
41                         if (!obj.getClass().getName().equals("java.util.ArrayList")) {
42                             mapList = new ArrayList();
43                             mapList.add(obj);
44                             mapList.add(m);
45                         }
46                         if (obj.getClass().getName().equals("java.util.ArrayList")) {
47                             mapList = (List) obj;
48                             mapList.add(m);
49                         }
50                         map.put(iter.getName(), mapList);
51                     } else
52                         map.put(iter.getName(), m);
53                 } else {
54                     if (map.get(iter.getName()) != null) {
55                         Object obj = map.get(iter.getName());
56                         if (!obj.getClass().getName().equals("java.util.ArrayList")) {
57                             mapList = new ArrayList();
58                             mapList.add(obj);
59                             mapList.add(iter.getText());
60                         }
61                         if (obj.getClass().getName().equals("java.util.ArrayList")) {
62                             mapList = (List) obj;
63                             mapList.add(iter.getText());
64                         }
65                         map.put(iter.getName(), mapList);
66                     } else
67                         map.put(iter.getName(), iter.getText());
68                 }
69             }
70         } else
71             map.put(e.getName(), e.getText());
72         return map;
73     }
74 }

3.控制器

 1 package com.ynet.controller;
 2
 3
 4 import com.ynet.utils.XmlUtils;
 5 import org.dom4j.Document;
 6 import org.dom4j.DocumentHelper;
 7 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 import org.springframework.web.bind.annotation.RestController;
10
11 import org.dom4j.DocumentException;
12
13 import java.io.FileInputStream;
14 import java.io.IOException;
15 import java.util.Map;
16
17 /**
18  * Created by Arya on 2017/11/3.
19  */
20 @RestController
21 @EnableAutoConfiguration
22 public class XmlDemoController {
23     @RequestMapping(value="/xmlDemo")
24     public Map<String, Object> xmlDocumentFile(){
25         Document doc = null;
26         try {
27             FileInputStream fis = new FileInputStream("F:\\myweb\\gateway\\gateway2\\src\\main\\resources\\customer.xml");
28             byte[] b = new byte[fis.available()];
29             fis.read(b);
30             String str = new String(b);
31             doc = DocumentHelper.parseText(str);
32         } catch (IOException e) {
33             e.printStackTrace();
34         } catch (DocumentException e) {
35             e.printStackTrace();
36         }
37
38         return XmlUtils.Dom2Map(doc);
39     }
40 }

4.postman测试结果

时间: 2024-10-30 02:20:20

java XML解析成Map的相关文章

Java xml 解析

1. XML框架结构 Java SE 6 平台提供的 XML 处理主要包括两个功能:XML 处理(JAXP,Java Architecture XML Processing)和 XML 绑定(JAXB,Java Architecture XML Binding). JAXP 包括 SAX 框架 —— 遍历元素,做出处理:DOM 框架 —— 构造 XML 文件的树形表示:StAX 框架 —— 拖拽方式的解析:XSLT 框架 —— 将 XML 数据转换成其他格式.JAXB 则是负责将 XML 文件和

java XML解析

package com.kpsh.myself; import java.io.File;import java.io.FileInputStream;import java.util.List; import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory; import org.dom4j.Document;import org.dom4j.DocumentHelper;imp

Java XML解析技术

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已.基本的解析方式有两种,一种叫SAX,另一种叫DOM. DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作.通过DOM接口,应用程

Oracle使用Sql把XML解析成表(Table)的方法

SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING XMLTYPE('<?xml version="1.0" encoding="gb2312" ?> <DEAL_BASIC> <USER_DEAL_INFO> <USER_DEAL_ID>1000100001</USER_DEAL_ID> <DEAL_INURE_TIME>

将json格式的字符串解析成Map对象

/** * 将json格式的字符串解析成Map对象 <li> * json格式:{"name":"admin","retries":"3fff","testname" * :"ddd","testretries":"fffffffff"} */ private static HashMap<String, String> t

c# XML解析成EasyUI TreeGrid格式

1.分析EasyUI TreeGrid的数据格式,demo的格式是这样的:http://www.jeasyui.net/demo/treegrid_data1.json 分析之后,得到基本的JSON格式: [ { "id": 1, "name": "name1", "value": "", "children": [ { "id": 2, "name&quo

Java XML解析之DOM

DOM解析是官方提供的XML解析方式之一,使用时无需引入第三方包,代码编写简单,方便修改树结构,但是由于DOM解析时是将整个XML文件加载到内存中进行解析,因此当XML文件较大时,使用DOM解析效率会降低,而且可能造成内存溢出. 当XML文件较大时应采用SAX解析(下一篇中会介绍).通常情况下,若XML文件只是用作系统的配置文件,文件一般不会很大,使用DOM解析基本就能解决问题. 以下分别是解析和生成xml的基本步骤: 1. XML解析: 上文已经说过DOM解析时是将整个XML文件加载到内存中,

Java数据库编程及Java XML解析技术

1.JDBC概述 A.  什么是JDBC? Java DataBase Connectivity:是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成.通过这些类和接口,JDBC把SQL语句发送给不同类型的数据库进行处理并接收处理结果 B.  JDBC的常用类和接口:DriverManager类, Connection接口, Statement接口, PreparedStatement接口, ResultSet接口 2.JDBC编程步骤 1). 加载驱动程序 Cl

Java对象转换成Map

需求总是千奇百怪,对象转成map,看似没必要,但就是有这个需求,所以记录下来 首先是Bean package tools; import lombok.Data; /** * 车辆实体类 */ @Data public class Car { private String id; private String model;//型号 private String color;//颜色 private String volume;//排量 private int year;//年份 } 然后是主要方