zoukankan      html  css  js  c++  java
  • java转换xml、list、map和json

     

    java转换xml、list、map和json

     
    [java] view plaincopy
     
    1. package com.shine.framework.core.util;  
    2.   
    3. import java.io.ByteArrayOutputStream;  
    4. import java.util.ArrayList;  
    5. import java.util.HashMap;  
    6. import java.util.Iterator;  
    7. import java.util.List;  
    8. import java.util.Map;  
    9.   
    10. import net.sf.json.JSON;  
    11. import net.sf.json.JSONSerializer;  
    12. import net.sf.json.xml.XMLSerializer;  
    13.   
    14. import org.dom4j.Document;  
    15. import org.dom4j.DocumentHelper;  
    16. import org.dom4j.Element;  
    17. import org.dom4j.io.OutputFormat;  
    18. import org.dom4j.io.XMLWriter;  
    19.   
    20. /** 
    21.  * common xml conver utility 
    22.  *  
    23.  * @author viruscodecn@gmail.com 
    24.  * @version Framework 2010.10.26 
    25.  * @url http://blog.csdn.net/arjick/article/details/6251777 
    26.  */  
    27. public class XmlConverUtil {  
    28.     /** 
    29.      * map to xml xml <node><key label="key1">value1</key><key 
    30.      * label="key2">value2</key>......</node> 
    31.      *  
    32.      * @param map 
    33.      * @return 
    34.      */  
    35.     public static String maptoXml(Map map) {  
    36.         Document document = DocumentHelper.createDocument();  
    37.         Element nodeElement = document.addElement("node");  
    38.         for (Object obj : map.keySet()) {  
    39.             Element keyElement = nodeElement.addElement("key");  
    40.             keyElement.addAttribute("label", String.valueOf(obj));  
    41.             keyElement.setText(String.valueOf(map.get(obj)));  
    42.         }  
    43.         return doc2String(document);  
    44.     }  
    45.   
    46.     /** 
    47.      * list to xml xml <nodes><node><key label="key1">value1</key><key 
    48.      * label="key2">value2</key>......</node><node><key 
    49.      * label="key1">value1</key><key 
    50.      * label="key2">value2</key>......</node></nodes> 
    51.      *  
    52.      * @param list 
    53.      * @return 
    54.      */  
    55.     public static String listtoXml(List list) throws Exception {  
    56.         Document document = DocumentHelper.createDocument();  
    57.         Element nodesElement = document.addElement("nodes");  
    58.         int i = 0;  
    59.         for (Object o : list) {  
    60.             Element nodeElement = nodesElement.addElement("node");  
    61.             if (o instanceof Map) {  
    62.                 for (Object obj : ((Map) o).keySet()) {  
    63.                     Element keyElement = nodeElement.addElement("key");  
    64.                     keyElement.addAttribute("label", String.valueOf(obj));  
    65.                     keyElement.setText(String.valueOf(((Map) o).get(obj)));  
    66.                 }  
    67.             } else {  
    68.                 Element keyElement = nodeElement.addElement("key");  
    69.                 keyElement.addAttribute("label", String.valueOf(i));  
    70.                 keyElement.setText(String.valueOf(o));  
    71.             }  
    72.             i++;  
    73.         }  
    74.         return doc2String(document);  
    75.     }  
    76.   
    77.     /** 
    78.      * json to xml {"node":{"key":{"@label":"key1","#text":"value1"}}} conver 
    79.      * <o><node class="object"><key class="object" 
    80.      * label="key1">value1</key></node></o> 
    81.      *  
    82.      * @param json 
    83.      * @return 
    84.      */  
    85.     public static String jsontoXml(String json) {  
    86.         try {  
    87.             XMLSerializer serializer = new XMLSerializer();  
    88.             JSON jsonObject = JSONSerializer.toJSON(json);  
    89.             return serializer.write(jsonObject);  
    90.         } catch (Exception e) {  
    91.             e.printStackTrace();  
    92.         }  
    93.         return null;  
    94.     }  
    95.   
    96.     /** 
    97.      * xml to map xml <node><key label="key1">value1</key><key 
    98.      * label="key2">value2</key>......</node> 
    99.      *  
    100.      * @param xml 
    101.      * @return 
    102.      */  
    103.     public static Map xmltoMap(String xml) {  
    104.         try {  
    105.             Map map = new HashMap();  
    106.             Document document = DocumentHelper.parseText(xml);  
    107.             Element nodeElement = document.getRootElement();  
    108.             List node = nodeElement.elements();  
    109.             for (Iterator it = node.iterator(); it.hasNext();) {  
    110.                 Element elm = (Element) it.next();  
    111.                 map.put(elm.attributeValue("label"), elm.getText());  
    112.                 elm = null;  
    113.             }  
    114.             node = null;  
    115.             nodeElement = null;  
    116.             document = null;  
    117.             return map;  
    118.         } catch (Exception e) {  
    119.             e.printStackTrace();  
    120.         }  
    121.         return null;  
    122.     }  
    123.   
    124.     /** 
    125.      * xml to list xml <nodes><node><key label="key1">value1</key><key 
    126.      * label="key2">value2</key>......</node><node><key 
    127.      * label="key1">value1</key><key 
    128.      * label="key2">value2</key>......</node></nodes> 
    129.      *  
    130.      * @param xml 
    131.      * @return 
    132.      */  
    133.     public static List xmltoList(String xml) {  
    134.         try {  
    135.             List<Map> list = new ArrayList<Map>();  
    136.             Document document = DocumentHelper.parseText(xml);  
    137.             Element nodesElement = document.getRootElement();  
    138.             List nodes = nodesElement.elements();  
    139.             for (Iterator its = nodes.iterator(); its.hasNext();) {  
    140.                 Element nodeElement = (Element) its.next();  
    141.                 Map map = xmltoMap(nodeElement.asXML());  
    142.                 list.add(map);  
    143.                 map = null;  
    144.             }  
    145.             nodes = null;  
    146.             nodesElement = null;  
    147.             document = null;  
    148.             return list;  
    149.         } catch (Exception e) {  
    150.             e.printStackTrace();  
    151.         }  
    152.         return null;  
    153.     }  
    154.   
    155.     /** 
    156.      * xml to json <node><key label="key1">value1</key></node> 转化为 
    157.      * {"key":{"@label":"key1","#text":"value1"}} 
    158.      *  
    159.      * @param xml 
    160.      * @return 
    161.      */  
    162.     public static String xmltoJson(String xml) {  
    163.         XMLSerializer xmlSerializer = new XMLSerializer();  
    164.         return xmlSerializer.read(xml).toString();  
    165.     }  
    166.   
    167.     /** 
    168.      *  
    169.      * @param document 
    170.      * @return 
    171.      */  
    172.     public static String doc2String(Document document) {  
    173.         String s = "";  
    174.         try {  
    175.             // 使用输出流来进行转化  
    176.             ByteArrayOutputStream out = new ByteArrayOutputStream();  
    177.             // 使用UTF-8编码  
    178.             OutputFormat format = new OutputFormat("   ", true, "UTF-8");  
    179.             XMLWriter writer = new XMLWriter(out, format);  
    180.             writer.write(document);  
    181.             s = out.toString("UTF-8");  
    182.         } catch (Exception ex) {  
    183.             ex.printStackTrace();  
    184.         }  
    185.         return s;  
    186.     }  
    187. }  
  • 相关阅读:
    neutron 多租户隔离的实现以及子网间路由的实现
    neutron是一个超级脚本的理解
    LVS + nginx实现高性能精准负载均衡
    LVS + HAProxy实现跨网负载均衡
    Linux 线程实现模型
    Linux 进程调度的主要策略
    Linux PCI设备驱动的实现思路与思想
    网络控制器intel 82599, powerpc 830的BD描述符结构
    Linux网络设备驱动的实现
    大规模分布式服务的核心思想
  • 原文地址:https://www.cnblogs.com/xiuxiu123/p/5033528.html
Copyright © 2011-2022 走看看