java转换xml list map和json

               

   很多朋友遇到xml,map和json互转的问题,在开发中xml和json越来越重要了。我就把我的工具类贴上来。


package com.shine.framework.core.util;import java.io.ByteArrayOutputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import net.sf.json.JSON;import net.sf.json.JSONSerializer;import net.sf.json.xml.XMLSerializer;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;/** * common xml conver utility *  * @author viruscodecn@gmail.com * @version Framework 2010.10.26 * @url http://blog.csdn.net/arjick/article/details/6251777 */public class XmlConverUtil /**  * map to xml xml <node><key label="key1">value1</key><key  * label="key2">value2</key>......</node>  *   * @param map  * @return  */ public static String maptoXml(Map map) {  Document document = DocumentHelper.createDocument();  Element nodeElement = document.addElement("node");  for (Object obj : map.keySet()) {   Element keyElement = nodeElement.addElement("key");   keyElement.addAttribute("label", String.valueOf(obj));   keyElement.setText(String.valueOf(map.get(obj)));  }  return doc2String(document); } /**  * list to xml xml <nodes><node><key label="key1">value1</key><key  * label="key2">value2</key>......</node><node><key  * label="key1">value1</key><key  * label="key2">value2</key>......</node></nodes>  *   * @param list  * @return  */ public static String listtoXml(List list) throws Exception {  Document document = DocumentHelper.createDocument();  Element nodesElement = document.addElement("nodes");  int i = 0;  for (Object o : list) {   Element nodeElement = nodesElement.addElement("node");   if (o instanceof Map) {    for (Object obj : ((Map) o).keySet()) {     Element keyElement = nodeElement.addElement("key");     keyElement.addAttribute("label", String.valueOf(obj));     keyElement.setText(String.valueOf(((Map) o).get(obj)));    }   } else {    Element keyElement = nodeElement.addElement("key");    keyElement.addAttribute("label", String.valueOf(i));    keyElement.setText(String.valueOf(o));   }   i++;  }  return doc2String(document); } /**  * json to xml {"node":{"key":{"@label":"key1","#text":"value1"}}} conver  * <o><node class="object"><key class="object"  * label="key1">value1</key></node></o>  *   * @param json  * @return  */ public static String jsontoXml(String json) {  try {   XMLSerializer serializer = new XMLSerializer();   JSON jsonObject = JSONSerializer.toJSON(json);   return serializer.write(jsonObject);  } catch (Exception e) {   e.printStackTrace();  }  return null; } /**  * xml to map xml <node><key label="key1">value1</key><key  * label="key2">value2</key>......</node>  *   * @param xml  * @return  */ public static Map xmltoMap(String xml) {  try {   Map map = new HashMap();   Document document = DocumentHelper.parseText(xml);   Element nodeElement = document.getRootElement();   List node = nodeElement.elements();   for (Iterator it = node.iterator(); it.hasNext();) {    Element elm = (Element) it.next();    map.put(elm.attributeValue("label"), elm.getText());    elm = null;   }   node = null;   nodeElement = null;   document = null;   return map;  } catch (Exception e) {   e.printStackTrace();  }  return null; } /**  * xml to list xml <nodes><node><key label="key1">value1</key><key  * label="key2">value2</key>......</node><node><key  * label="key1">value1</key><key  * label="key2">value2</key>......</node></nodes>  *   * @param xml  * @return  */ public static List xmltoList(String xml) {  try {   List<Map> list = new ArrayList<Map>();   Document document = DocumentHelper.parseText(xml);   Element nodesElement = document.getRootElement();   List nodes = nodesElement.elements();   for (Iterator its = nodes.iterator(); its.hasNext();) {    Element nodeElement = (Element) its.next();    Map map = xmltoMap(nodeElement.asXML());    list.add(map);    map = null;   }   nodes = null;   nodesElement = null;   document = null;   return list;  } catch (Exception e) {   e.printStackTrace();  }  return null; } /**  * xml to json <node><key label="key1">value1</key></node> 转化为  * {"key":{"@label":"key1","#text":"value1"}}  *   * @param xml  * @return  */ public static String xmltoJson(String xml) {  XMLSerializer xmlSerializer = new XMLSerializer();  return xmlSerializer.read(xml).toString(); } /**  *   * @param document  * @return  */ public static String doc2String(Document document) {  String s = "";  try {   // 使用输出流来进行转化   ByteArrayOutputStream out = new ByteArrayOutputStream();   // 使用UTF-8编码   OutputFormat format = new OutputFormat("   ", true, "UTF-8");   XMLWriter writer = new XMLWriter(out, format);   writer.write(document);   s = out.toString("UTF-8");  } catch (Exception ex) {   ex.printStackTrace();  }  return s; }}


           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值