java map list xml转化操作类

来源:互联网 发布:数据库设计三大原则 编辑:程序博客网 时间:2024/05/17 23:33
很多朋友遇到xml,map和json互转的问题,在开发中xml和json越来越重要了。下面是一个比较完整的操作
json-lib依赖包:
  commons-beanutils-1.8.0.jar
  commons-collections-3.2.1.jar
  commons-lang-2.4.jar
  commons-logging-1.1.1.jar
  ezmorph-1.0.6.jar
  json-lib-2.3-jdk15.jar
  xom-1.2.2.jar
以上的包不能缺少 否则出现运行错误
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
 */ 
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) { 
        Document document = DocumentHelper.createDocument(); 
        Element nodesElement = document.addElement("nodes"); 
        for (Object o : list) { 
            Element nodeElement = nodesElement.addElement("node"); 
            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))); 
            } 
        } 
        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; 
    }   
    public static void main(String args[]) { 
        XmlConverUtil util = new XmlConverUtil(); 
        String xml = "{\"node\":{\"key\":{\"@lable\":\"key1\",\"#text\":\"value1\"}}}"; 
        System.out.println(util.jsontoXml(xml)); 
    } 

 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑插耳机还是外放怎么办 主机电脑耳机插孔坏了怎么办 苹果6plus有点卡怎么办 手机拨通电话后黑屏怎么办 手机拨通后没声音怎么办 苹果手机铃声不响了怎么办 婴儿喘气粗好像有痰怎么办 金毛呼吸声很大怎么办 回看福建导视该怎么办 楼上木地板走路声音都很响怎么办 班里团支不搭理我我该怎么办 客户买家具说贵怎么办 英雄联盟超出显示范围怎么办 脸上有斑点怎么办内条 脖子扭到了一动就疼怎么办 杭州限行在路上怎么办 在路上限行了怎么办 微信号不能进群怎么办 在微信约妹子被骗2000怎么办 qq号进不了热聊怎么办 网上买彩票中五百万怎么办 别人登我支付宝怎么办 医保刷卡刷到现金支付怎么办 微信诈骗立案后怎么办 奔跑吧诈骗填写了身份证怎么办 快手绑定的手机号丢了怎么办 球球大作战绑定手机号丢了怎么办 快手绑定手机号丢了怎么办 绑定银行卡的手机号丢了怎么办 爱奇艺绑定的手机号丢了怎么办 高铁票订错时间怎么办 微信音频视频打出没反应怎么办 海尔超低温保存箱低温报警怎么办 孕期吃了烧烤蔬菜怎么办 百姓动迁政府说话不算数怎么办 孕妇用了青草膏怎么办 药材不知道啥名怎么办 诛仙手游鸿蒙紫气不见了怎么办 紫叶兰叶干了怎么办 绿萝叶子中毒了怎么办? 怀孕初期胃疼的厉害怎么办