`
josunmarks
  • 浏览: 9261 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

List<Map>与XML之间的转换

阅读更多
公司要使用XML传入数据,需要将List<Map>结构的数据转换为XML。
实现方法已经完成,贴出来备忘。
1.XML的根节点的建立
    /**
     * 类转xml方法.
     * @param data List<?>
     * @return String
     * @throws
     */
    public  String map2xml(Map map) {
        Document document = DocumentHelper.createDocument();
        Element nodesElement = document.addElement("ROOT");
        map2xml(map,nodesElement);
        return doc2String(document);
    }

     /**
     * 类转xml方法.
     * @param data List<?>
     * @return String
     * @throws
     */
    public String list2xml(List<?> list) {
        Document document = DocumentHelper.createDocument();
        Element nodesElement = document.addElement("DATA");
        list2xml(list,nodesElement);
        return doc2String(document);
    }

2.XML转String 用dom4j的功能实现
    /**
     * xml转为String.
     * @param document
     * @return
     * @throws
     */
    public 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; 
    }
3.List2XML方法实现
   /**
     * List2XML,目前支持List<List> List<Map> List<Map<String,List>>等只有
     * List Map 组合的数据进行转换.
     * @param list
     * @param element
     * @return
     * @throws
     */
    public Element list2xml(List list,Element element){
        int i = 0;
        for (Object o : list) {
            Element nodeElement = element.addElement("LIST");
            if (o instanceof Map) {
                nodeElement.addAttribute("type", "o");
                Map m = (Map) o;
                for (Iterator iterator = m.entrySet().iterator(); iterator.hasNext();) {
                    Entry entry = (Entry) iterator.next();
                    Element keyElement = nodeElement.addElement(entry.getKey().toString());
                    if (entry.getValue() instanceof List) {
                        keyElement.addAttribute("type", "l");
                        list2xml((List) entry.getValue(),keyElement);
                    } else {
                        keyElement.addAttribute("type", "s");
                        keyElement.setText(entry.getValue().toString());
                    }
                }
            } else if (o instanceof List) {
                nodeElement.addAttribute("type", "l");
                list2xml((List)o,nodeElement);
            }
            else {
                Element keyElement = nodeElement.addElement("value");
                keyElement.addAttribute("num", String.valueOf(i));
                keyElement.setText(String.valueOf(o));
            }
            i++;
        }
        return element;
    }

4.xml2List
    /**
     * xml转List方法.
     * @param xml
     * @return List<?>
     * @throws
     */
    public List<?> xml2List(String xml){
        try { 
            List list = new ArrayList(); 
            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(); 
                if(("l").equals(nodeElement.attributeValue("type"))){
                    List s = xml2List(nodeElement.asXML());
                    list.add(s); 
                    s = null; 
                }else if(("o").equals(nodeElement.attributeValue("type"))){
                    Map map = xml2Map(nodeElement.asXML());
                    list.add(map); 
                    map = null; 
                }else{
                    list.add(nodeElement.getText());
                }
            } 
            nodes = null; 
            nodesElement = null; 
            document = null; 
            return list; 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return null; 
    }
5.XML2MAP
     /**
     * xml 2 map
     * @param xml
     * @return
     */ 
    public Map xml2Map(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();
                if("l".equals(elm.attributeValue("type"))){
                    map.put(elm.getName(), xml2List(elm.asXML())); 
                }else if("o".equals(elm.attributeValue("type"))){
                    map.put(elm.getName(), xml2Map(elm.asXML())); 
                }else{
                    map.put(elm.getName(), elm.getText()); 
                }
                elm = null; 
            } 
            node = null; 
            nodeElement = null; 
            document = null; 
            return map; 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return null; 
    }
0
2
分享到:
评论
2 楼 josunmarks 2014-07-31  
没有  对其他语音没有研究
1 楼 windvix 2014-07-31  
有其它语言的版本不?

相关推荐

    map/list集合转化成xml字符串 xml字符串转化成map/list集合

    &lt;P&gt;map集合转化成xml字符串&lt;/P&gt; &lt;P&gt;xml字符串转化成map集合&lt;/P&gt; &lt;P&gt;list集合转化成xml字符串&lt;/P&gt; &lt;P&gt;xml字符串转化成list集合&lt;/P&gt;

    java转换xml、list、map和json

    java转换xml、list、map和json

    解析xml数组,配置好节点IbpsBankCodeConf/ibps/ibp和xml字符串即可转换成List<Map<?,?>>

    &gt;"&lt;IbpsBankCodeConf&gt;" + " &lt;ibps code='322'&gt;" + " &lt;ibps name='测试银行' ECFlag='2' paySysBankCode='322290000011' eisBankCode='null' eisSiteCode='1' /&gt;\n" + " &lt;ibpsName name='测试银行爱博家园支行' ...

    Java JDK实例宝典

    4 对象与XML的转换 &lt;br&gt;第18章 Java Mail &lt;br&gt;18. 1 使用SMTP协议发送简单邮件 &lt;br&gt;18. 2 发送带附件的邮件 &lt;br&gt;18. 3 给多人发送邮件 &lt;br&gt;18. 4 使用POP3接收邮件 &lt;br&gt;第19章 JSP与Servlet &lt;br&gt;19. 1 获取客户端的...

    jquery-1.1.3 效率提高800%

    &lt;br&gt;Safari 2 3575ms 475ms 753% &lt;br&gt;Opera 9.1 3196ms 326ms 980% &lt;br&gt;Average improvement: 867% &lt;br&gt;&lt;br&gt;下表为jQuery1.1.3与常用的一些JS库选择器的对比:&lt;br&gt;Browser Prototype jQuery Mootools Ext Dojo &lt;br&gt;...

    java将xml串转换成Map类型

    将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map

    Jackson 框架JSON、XML、List、Map直接相互转换

    NULL 博文链接:https://bugyun.iteye.com/blog/2278997

    通过fastjson实现各种格式与json之间的转换

    通过fastjson实现了JavaBean,list&lt;JavaBean&gt;,MAP,list&lt;String&gt;等格式与json格式之间的转换,已经附带fastjson的包,包的版本为fastjson-1.1.36.jar

    xml2object、object2xml之JAXB

    前段时间找了好久xml与object之间的转换都没找到!最近在学习WebService,讲到JAXB!没听说过!看了才知道jdk中自带了这个功能,什么这个...List Map 继承 接口 数据类型不一至的一异常 父子类的转换 &lt;&lt;&lt;&lt;---&gt;&gt;&gt;&gt; xml

    iBatis SQL Maps开发指南.pdf

    转换XML配置文件(从1x到20) 使用新的JAR文件 SQL Map XML配置文件 &lt;properties&gt;元素 &lt;setting&gt;元素 &lt;typeAlias&gt;元素 &lt;transactionManager&gt;元素 &lt;datasource&gt;元素 &lt;sqlMap&gt;元素 SQL Map XML映射文件 Mapped ...

    jQuery完全实例.rar

    &lt;p&gt;one&lt;/p&gt; &lt;div&gt;&lt;p&gt;two&lt;/p&gt;&lt;/div&gt; &lt;p&gt;three&lt;/p&gt; jQuery 代码: $("div &gt; p"); 结果: [ &lt;p&gt;two&lt;/p&gt; ] -------------------------------------------------------------------------------- 在文档的第一个表单...

    freemarker总结

    除了无法访问它的大小和不能使用索引来获得它的子变量:集合可以看作只能由&lt;#list...&gt;指令使用的受限sequences。 5、 方法:通过传递的参数进行计算,以新对象返回结果 方法变量通常是基于给出的参数计算值在数据...

    java转换xml、list、map和json.docx

    java转换xml、list、map和json.docxjava转换xml、list、map和json.docx

    百万商业圈 .NET 开发框架及开发框架API说明书 核心库

    public List&lt;string&gt; GetDeleteAndInsertXmlSql(Object o, string xml, List&lt;string&gt; keys) 4、增加集成了盘古中文分词 更多范例请参考 http://hi.baidu.com/earthsearch 注:使用范例时:请先引用所有的DLL类库 ...

    java list和xml互转例子

    文件里包含jar包 dom4j-1.6.1.jar,list中放多个map,map里随意放键值对,最后可转换为xml文档,xml文档也可以解析存入list文件中

    FreeMark学习笔记

    &lt;#list animals as being&gt;&lt;br&gt; &lt;li&gt;${being.name} for ${being.price} Euros&lt;br&gt; &lt;#list&gt;&lt;br&gt; &lt;u1&gt;&lt;br&gt; &lt;/body&gt;&lt;br&gt; &lt;/html&gt; 1, FTL指令规则 在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和...

    java转换xml、list、map和json.pdf

    java转换xml、list、map和json.pdf

    DWR.xml配置文件说明书(含源码)

    默认的时候DWR将java void值转换成javascript的null值就是这样设置&lt;convert converter="null" match="void"/&gt;. 有时java.lang.Void也需要进行这样的转换,所以设置也是相似的&lt;convert converter="null" match="java....

    java转换xml、list、map和json[借鉴].pdf

    java转换xml、list、map和json[借鉴].pdf

    java转换xml、list、map和json(20210924214538)[借鉴].pdf

    java转换xml、list、map和json(20210924214538)[借鉴].pdf

Global site tag (gtag.js) - Google Analytics