码迷,mamicode.com
首页 > 编程语言 > 详细

java转换xml、list、map和json

时间:2015-12-09 19:01:04      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:

 

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. }  

java转换xml、list、map和json

标签:

原文地址:http://www.cnblogs.com/xiuxiu123/p/5033528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!