将map自动转化为xml报文
public static byte[] callMapToXML(Map map) {logger.info("将Map转成Xml, Map:" + map.toString());StringBuffer sb = new StringBuffer();sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><bizdata>");mapToXMLTest2(map, sb);sb.append("</bizdata>");logger.info("将Map转成Xml, Xml:" + sb.toString());try {return sb.toString().getBytes("UTF-8");} catch (Exception e) {logger.error(e);}return null;}private static void mapToXMLTest2(Map map, StringBuffer sb) {Set set = map.keySet();for (Iterator it = set.iterator(); it.hasNext();) {String key = (String) it.next();Object value = map.get(key);if (null == value)value = "";if (value.getClass().getName().equals("java.util.ArrayList")) {ArrayList list = (ArrayList) map.get(key);sb.append("<" + key + ">");for (int i = 0; i < list.size(); i++) {HashMap hm = (HashMap) list.get(i);mapToXMLTest2(hm, sb);}sb.append("</" + key + ">");} else {if (value instanceof HashMap) {sb.append("<" + key + ">");mapToXMLTest2((HashMap) value, sb);sb.append("</" + key + ">");} else {sb.append("<" + key + ">" + value + "</" + key + ">");}}}}
待转化的多层级map代码:
public static void main(String[] args) {Map<String, Object> dataMap = new LinkedHashMap<String, Object>(); //默认dataMap.put("rtnCode", "02");dataMap.put("rtnMsg", "查询失败");dataMap.put("idWltCloudDistrict", "专区id");Map<String, Object> bizMap = new LinkedHashMap<String, Object>();bizMap.put("serviceId", "serviceId001");bizMap.put("data", dataMap);//data节点是一个mapMap<String, Object> objMap = new LinkedHashMap<String, Object>();objMap.put("idWltCloudDistrict", "专区id");objMap.put("districtName", "专区名称");objMap.put("validateDateStart", "专区有效期开始");objMap.put("validateDateEnd", "专区有效期结束");objMap.put("status", "专区状态(00-待发布;01-销售中; 02-已下架;)");objMap.put("partnerId", "合作伙伴id");objMap.put("channelId", "渠道id");objMap.put("areaId", "商圈专区id");dataMap.putAll(objMap); //List<Map<String, Object>> prodKindList1 = new ArrayList<Map<String, Object>>();for(int i=1;i<=2;i++){// 第二层List<Map<String, Object>> prodKindList2 = new ArrayList<Map<String, Object>>();for(int j=1;j<=2;j++){Map<String, Object> prodKindObj2 = new LinkedHashMap<String, Object>();prodKindObj2.put("idWltCloudProdKind", "类目ID");prodKindObj2.put("prodKindName", "类目名称");prodKindObj2.put("prodKindIdx", "类目序号");Map<String, Object> prodKind2 = new LinkedHashMap<String, Object>();prodKind2.put("prodKind", prodKindObj2);prodKindList2.add(prodKind2);}//第一层Map<String, Object> prodKindOjb1 = new LinkedHashMap<String, Object>();prodKindOjb1.put("idWltCloudProdKind", "类目ID");prodKindOjb1.put("prodKindName", "类目名称");prodKindOjb1.put("prodKindIdx", "类目序号");prodKindOjb1.put("prodKindList", prodKindList2);Map<String, Object> prodKind1 = new LinkedHashMap<String, Object>();prodKind1.put("prodKind", prodKindOjb1);prodKindList1.add(prodKind1);}dataMap.put("prodKindList", prodKindList1);XmlCommonUtil.callMapToXML(bizMap);}
转化后效果:
<?xml version="1.0" encoding="utf-8"?>
<bizdata><serviceId>serviceId001</serviceId><data><rtnCode>02</rtnCode><rtnMsg>查询失败</rtnMsg><idWltCloudDistrict>专区id</idWltCloudDistrict><districtName>专区名称</districtName><validateDateStart>专区有效期开始</validateDateStart><validateDateEnd>专区有效期结束</validateDateEnd><status>专区状态(00-待发布;01-销售中; 02-已下架;)</status><partnerId>合作伙伴id</partnerId><channelId>渠道id</channelId><areaId>商圈专区id</areaId><prodKindList><prodKind><idWltCloudProdKind>类目ID</idWltCloudProdKind><prodKindName>类目名称</prodKindName><prodKindIdx>类目序号</prodKindIdx><prodKindList><prodKind><idWltCloudProdKind>类目ID</idWltCloudProdKind><prodKindName>类目名称</prodKindName><prodKindIdx>类目序号</prodKindIdx></prodKind><prodKind><idWltCloudProdKind>类目ID</idWltCloudProdKind><prodKindName>类目名称</prodKindName><prodKindIdx>类目序号</prodKindIdx></prodKind></prodKindList></prodKind><prodKind><idWltCloudProdKind>类目ID</idWltCloudProdKind><prodKindName>类目名称</prodKindName><prodKindIdx>类目序号</prodKindIdx><prodKindList><prodKind><idWltCloudProdKind>类目ID</idWltCloudProdKind><prodKindName>类目名称</prodKindName><prodKindIdx>类目序号</prodKindIdx></prodKind><prodKind><idWltCloudProdKind>类目ID</idWltCloudProdKind><prodKindName>类目名称</prodKindName><prodKindIdx>类目序号</prodKindIdx></prodKind></prodKindList></prodKind></prodKindList></data>
</bizdata>
楼主这么辛苦,请扫一下楼主的支付宝红包推荐码吧,记得一定要消费掉哦。双赢哦。
1、打开支付宝首页搜索“8282987” 立即领红包。
2、扫码领红包。
标题。
将map自动转化为xml报文相关推荐
- json报文转化为xml报文_JSON与XML互相转化(Jackson)
选型: json-lib.jar可以做,但是太老了,抛弃: fastjson完全没有xml相关功能: staxon经测试不能用. 最终选用jackson来主要实现. JDK为1.8,如果低于1.8,则 ...
- JAVA对象集合转化为xml转换_xml转为Map集合以及对象转化为xml
1.[代码][Java]代码 package com.fang.util; import java.io.InputStream; import java.util.HashMap; import j ...
- 解析xml报文,xml与map互转
这段时间写了一个关于xml报文的工具类,做一下具体的讲解: xml文本 <NTMMessage version="1.03"> <NTMHeader>< ...
- mybatis支持驼峰自动转换sql吗_mybatis-plus返回map自动转驼峰配置操作
mybatis-plus返回map自动转驼峰配置object-wrapper-factory不生效问题解决:配置map-underscore-to-camel-case: true不生效问题解决 很多 ...
- apache camel 相关配置_MyBatis-Plus返回map自动转驼峰配置object-wrapper-factory
## 问题场景: 很多时候我们工作中查询很多字段的时候一般是返回一个VO来接收,这个时候我们只要在yml中配置了 map-underscore-to-camel-case: true 就会自动将查询数 ...
- Jaxb对xml报文头的小修小改
前言: 也是在实际工作中, 借助jaxb来实现xml到java对象的映射转换. 在实际应用中, 也遇到了一些有趣好玩的东西, 权当记录下来. 本文主要讲解jaxb如何生成约定的xml报文头的实现思路, ...
- vba xml 怎么设置父节点_熊二做了一个xml报文处理的开源库easyxml
❝ 自信.冷静.专注.-- TM 熊的自我勉励 ❞ 1. 前言 熊二从去年开始,因项目需求接触到xml报文的处理,也是我第一次学习用C/C++的方式处理基于DOM模型的xml报文.因为本人比较懒hhh ...
- Java解析XML报文内容及标签属性
前言 JSON格式的报文解析,虽然json串短小精悍,也能有效表达层次结构,但是每个元素只能找到对应的元素值,不能体现更丰富的样式特征.比如某个元素除了要传输它的字符串文本,还想传输该文本的类型.字体 ...
- Java开发笔记XML报文的解析
Java开发笔记XML报文的解析 前言 正文 代码示例 结语 前言 项目任务里需要解析xml报文. 于是开始着手学习相关知识,在查看了多篇博文后找到了一篇不错的,讲的很实用. 转载来源:Java开发笔 ...
最新文章
- JPA入门简介与搭建HelloWorld(附代码下载)
- 一段始终保持在最底部的div css代码
- group by很多字段是不是会很慢_女生回复我总很慢,怎么办?
- LeetCode 2095. 删除链表的中间节点(快慢指针)
- wps里为什么没有华文楷体_【上寮金贝幼儿园父母课堂】“为什么老师发的照片里没有我家孩子?”...
- JS修改标签中的文本且不影响其中标签
- jqgrid 固定列宽度_jqGrid 设置列宽
- java跨平台_Java如何实现跨平台
- pdfplumber库解析pdf格式
- 18.Hermite插值
- Java itext tiff转换pdf
- k8s之常用操作命令
- EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台
- Python——枚举(enum)
- mysql vga怎么使用,mysql explain 详解
- SEO基础知识简介(一)
- DCM protocol Diagnostic session
- DELLEMC VxRail POC 注意点
- uniapp项目中引用iconfont图标,实现信号强度图标展示(离线使用)
- oracle 权限问题9017,泛微OA 曝出WorkflowCenterTreeData接口注入漏洞(限oracle数据库)
热门文章
- fsn文件 c语言,笨办法学C 练习24:输入输出和文件
- localhost/ ~wallhe/index.php,实战:2019 0ctf final Web Writeup(一)
- 华为m30por升级鸿蒙,华为mate30、mate30Pro怎么升级鸿蒙系统?华为mate30Pro升级鸿蒙系统步骤流程...
- 2Pai荣湃单通道数字隔离器π110M30兼容代替Si8410AB-D-IS 3.0kVrms 10Mbps 结构简单 方案更加灵活
- 名画112 钱选《画选十幅》
- 文本处理之句子切分-日语和英语
- 【跃迁之路】【701天】程序员高效学习方法论探索系列(实验阶段458-2019.1.21)...
- NVIDIA TensorRT安装包下载分享—— 云盘分享 【TensorRT安装】
- Linux下应用进程消失原因分析
- 港科资讯|香港科大与苏州市政府签署战略合作协议