map 形式的转换成XML报文文件

  1. public static byte[] callMapToXML(Map map) {  
  2.         logger.info("将Map转成Xml, Map:" + map.toString());  
  3.         StringBuffer sb = new StringBuffer();  
  4.         sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><bizdata>");  
  5.         mapToXMLTest2(map, sb);  
  6.         sb.append("</bizdata>");  
  7.         logger.info("将Map转成Xml, Xml:" + sb.toString());  
  8.         try {  
  9.             return sb.toString().getBytes("UTF-8");  
  10.         } catch (Exception e) {  
  11.             logger.error(e);  
  12.         }  
  13.         return null;  
  14.     }  
  15.   
  16.     private static void mapToXMLTest2(Map map, StringBuffer sb) {  
  17.         Set set = map.keySet();  
  18.         for (Iterator it = set.iterator(); it.hasNext();) {  
  19.             String key = (String) it.next();  
  20.             Object value = map.get(key);  
  21.             if (null == value)  
  22.                 value = "";  
  23.             if (value.getClass().getName().equals("java.util.ArrayList")) {  
  24.                 ArrayList list = (ArrayList) map.get(key);  
  25.                 sb.append("<" + key + ">");  
  26.                 for (int i = 0; i < list.size(); i++) {  
  27.                     HashMap hm = (HashMap) list.get(i);  
  28.                     mapToXMLTest2(hm, sb);  
  29.                 }  
  30.                 sb.append("</" + key + ">");  
  31.   
  32.             } else {  
  33.                 if (value instanceof HashMap) {  
  34.                     sb.append("<" + key + ">");  
  35.                     mapToXMLTest2((HashMap) value, sb);  
  36.                     sb.append("</" + key + ">");  
  37.                 } else {  
  38.                     sb.append("<" + key + ">" + value + "</" + key + ">");  
  39.                 }  
  40.   
  41.             }  
  42.   
  43.         }  
  44.     }  



待转化的多层级map代码:

[java]  view plain  copy
  1. public static void main(String[] args) {  
  2.         Map<String, Object> dataMap = new LinkedHashMap<String, Object>(); //默认  
  3.         dataMap.put("rtnCode""02");  
  4.         dataMap.put("rtnMsg""查询失败");  
  5.         dataMap.put("idWltCloudDistrict""专区id");  
  6.           
  7.         Map<String, Object> bizMap = new LinkedHashMap<String, Object>();  
  8.         bizMap.put("serviceId""serviceId001");  
  9.         bizMap.put("data", dataMap);//data节点是一个map  
  10.           
  11.         Map<String, Object> objMap = new LinkedHashMap<String, Object>();  
  12.         objMap.put("idWltCloudDistrict""专区id");  
  13.         objMap.put("districtName""专区名称");  
  14.         objMap.put("validateDateStart""专区有效期开始");  
  15.         objMap.put("validateDateEnd""专区有效期结束");  
  16.         objMap.put("status""专区状态(00-待发布;01-销售中; 02-已下架;)");  
  17.         objMap.put("partnerId""合作伙伴id");  
  18.         objMap.put("channelId""渠道id");  
  19.         objMap.put("areaId""商圈专区id");  
  20.         dataMap.putAll(objMap); //  
  21.           
  22.         List<Map<String, Object>> prodKindList1 = new ArrayList<Map<String, Object>>();  
  23.         for(int i=1;i<=2;i++){  
  24.             // 第二层  
  25.             List<Map<String, Object>> prodKindList2 = new ArrayList<Map<String, Object>>();  
  26.             for(int j=1;j<=2;j++){  
  27.                 Map<String, Object> prodKindObj2 = new LinkedHashMap<String, Object>();  
  28.                 prodKindObj2.put("idWltCloudProdKind""类目ID");  
  29.                 prodKindObj2.put("prodKindName""类目名称");  
  30.                 prodKindObj2.put("prodKindIdx""类目序号");  
  31.                 Map<String, Object> prodKind2 = new LinkedHashMap<String, Object>();  
  32.                 prodKind2.put("prodKind", prodKindObj2);  
  33.                 prodKindList2.add(prodKind2);  
  34.             }  
  35.               
  36.             //第一层  
  37.             Map<String, Object> prodKindOjb1 = new LinkedHashMap<String, Object>();  
  38.             prodKindOjb1.put("idWltCloudProdKind""类目ID");  
  39.             prodKindOjb1.put("prodKindName""类目名称");  
  40.             prodKindOjb1.put("prodKindIdx""类目序号");  
  41.             prodKindOjb1.put("prodKindList", prodKindList2);  
  42.             Map<String, Object> prodKind1 = new LinkedHashMap<String, Object>();  
  43.             prodKind1.put("prodKind", prodKindOjb1);  
  44.             prodKindList1.add(prodKind1);  
  45.         }  
  46.           
  47.         dataMap.put("prodKindList", prodKindList1);  
  48.           
  49.         XmlCommonUtil.callMapToXML(bizMap);  
  50.     }  

转化后效果:

[java]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <bizdata>  
  3.     <serviceId>serviceId001</serviceId>  
  4.     <data>  
  5.         <rtnCode>02</rtnCode>  
  6.         <rtnMsg>查询失败</rtnMsg>  
  7.         <idWltCloudDistrict>专区id</idWltCloudDistrict>  
  8.         <districtName>专区名称</districtName>  
  9.         <validateDateStart>专区有效期开始</validateDateStart>  
  10.         <validateDateEnd>专区有效期结束</validateDateEnd>  
  11.         <status>专区状态(00-待发布;01-销售中; 02-已下架;)</status>  
  12.         <partnerId>合作伙伴id</partnerId>  
  13.         <channelId>渠道id</channelId>  
  14.         <areaId>商圈专区id</areaId>  
  15.         <prodKindList>  
  16.             <prodKind>  
  17.                 <idWltCloudProdKind>类目ID</idWltCloudProdKind>  
  18.                 <prodKindName>类目名称</prodKindName>  
  19.                 <prodKindIdx>类目序号</prodKindIdx>  
  20.                 <prodKindList>  
  21.                     <prodKind>  
  22.                         <idWltCloudProdKind>类目ID</idWltCloudProdKind>  
  23.                         <prodKindName>类目名称</prodKindName>  
  24.                         <prodKindIdx>类目序号</prodKindIdx>  
  25.                     </prodKind>  
  26.                     <prodKind>  
  27.                         <idWltCloudProdKind>类目ID</idWltCloudProdKind>  
  28.                         <prodKindName>类目名称</prodKindName>  
  29.                         <prodKindIdx>类目序号</prodKindIdx>  
  30.                     </prodKind>  
  31.                 </prodKindList>  
  32.             </prodKind>  
  33.             <prodKind>  
  34.                 <idWltCloudProdKind>类目ID</idWltCloudProdKind>  
  35.                 <prodKindName>类目名称</prodKindName>  
  36.                 <prodKindIdx>类目序号</prodKindIdx>  
  37.                 <prodKindList>  
  38.                     <prodKind>  
  39.                         <idWltCloudProdKind>类目ID</idWltCloudProdKind>  
  40.                         <prodKindName>类目名称</prodKindName>  
  41.                         <prodKindIdx>类目序号</prodKindIdx>  
  42.                     </prodKind>  
  43.                     <prodKind>  
  44.                         <idWltCloudProdKind>类目ID</idWltCloudProdKind>  
  45.                         <prodKindName>类目名称</prodKindName>  
  46.                         <prodKindIdx>类目序号</prodKindIdx>  
  47.                     </prodKind>  
  48.                 </prodKindList>  
  49.             </prodKind>  
  50.         </prodKindList>  
  51.     </data>  
  52. </bizdata>  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值