`
josunmarks
  • 浏览: 9453 次
  • 性别: 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集合

    在Java编程中,数据结构与XML(eXtensible Markup ...通过实践这些示例,你可以更好地理解并掌握Map和List与XML之间的转换技巧。在进行这样的转换时,确保处理好异常、空值和特殊字符,以确保数据的完整性和安全性。

    java转换xml、list、map和json

    "java转换xml、list、map和json" ...本文主要讲述了Java中将xml、list、map和json之间的转换的相关知识点,包括xml和map之间的转换、xml和list之间的转换、xml和json之间的转换、map和json之间的转换等。

    spring,cxf,restful发布webservice传递List,Map,List&lt;Map&gt;

    例如,如果你有一个包含List&lt;Map&lt;String, String&gt;&gt;的对象,JAXB会将其转换为XML元素结构。 以下是发布带有复杂类型参数的RESTful Web服务的基本步骤: 1. **定义数据模型**:创建对应的Java类,如`ComplexObject`...

    解析excel数据转换为Map 支持03和07(xls/xlsx)

    Map&lt;String, Object&gt; rowMap = new HashMap&lt;&gt;(); for (int i = 0; i &lt; row.getLastCellNum(); i++) { Cell cell = row.getCell(i); // 跳过空单元格 if (cell == null || cell.getCellType() == CellType.BLANK...

    jQuery的Ajax实现异步传输List、Map

    在与服务器进行数据交互时,我们将List和Map转换为JSON格式,以便于传输。 要实现jQuery的Ajax调用,我们需要使用`$.ajax()`函数。这个函数提供了一种灵活的方式,可以配置请求的所有方面,包括URL、数据类型、请求...

    ajax和json跟java实现List、Map直接传递

    Map&lt;String, String&gt; map = new HashMap&lt;&gt;(); map.put("key1", "value1"); map.put("key2", "value2"); JSONObject jsonObject = new JSONObject(map); ``` 然后,你可以通过Ajax发送这个JSON字符串到服务器。例如...

    json与List-map互换和jar

    Map&lt;String, Object&gt; myMap = new HashMap&lt;&gt;(); // 填充Map... Gson gson = new Gson(); String jsonString = gson.toJson(myMap); ``` 2. **JSON转Map** 将JSON字符串解析回`Map`,同样使用`Gson`库,但...

    java后台list集合转XML格式数据

    java后台从数据库读取 数据,封装到list集合,控制层转化为XML格式数据

    解析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='测试银行爱博家园支行' ...

    com.thoughtworks.xstream.XStream操作XML和java对象的一些用法

    本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一个强大的库,它由Pete Gyford开发,用于将Java对象序列化为XML,同时也能将XML反序列化为Java...

    Java编码辅助工具Mapstruct用法详解

    plugin&lt;/artifactId&gt;&lt;version&gt;3.7.0&lt;/version&gt;&lt;configuration&gt;&lt;annotationProcessorPaths&gt;&lt;path&gt;&lt;groupId&gt;org.projectlombok&lt;/groupId&gt;&lt;...&gt;&lt;/path&gt;&lt;path&gt;&lt;groupId&gt;org.mapstruct&lt;/groupId&gt;&lt;artifactId&gt;mapstruct...

    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 获取客户端的...

    基于itext7+freemarker模板导出pdf

    Map&lt;String, Object&gt; data = new HashMap&lt;&gt;(); data.put("title", "报告标题"); data.put("content", "这是报告内容..."); // 添加更多数据... ``` 步骤四:生成HTML字符串 使用FreeMarker的`Template`类加载模板...

    Spring中特殊数据类型的处理

    在Spring中,处理日期类型时,我们可能遇到字符串与日期之间的转换问题。有两种主要方法来解决这个问题: a. **自定义类型转换器**:创建一个类继承`PropertyEditorSupport`,并覆盖`setAsText`方法,例如`...

    Map转换成xml

    在Java编程中,将数据结构如`Map`转换为XML格式是一种常见的需求,尤其是在处理配置文件、数据交换或与Web服务交互时。以下是对如何实现这一转换的深入解析,涵盖了代码逻辑、关键步骤以及可能遇到的问题。 #### 一...

    java list和xml互转例子

    总之,Java List与XML之间的转换是数据交换和持久化的重要手段,而dom4j库提供了一种方便的方式来实现这种转换。通过熟练掌握这些概念和方法,开发者可以更好地在Java应用程序中处理结构化的数据。

    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

    java项目实体类转换实例

    &lt;value&gt;classpath:dozerBeanMapping.xml&lt;/value&gt; &lt;/list&gt; &lt;/property&gt; &lt;/bean&gt; ``` 在上面的代码中,我们定义了一个名为mapper的Bean,用于加载dozerBeanMapping.xml文件。在dozerBeanMapping.xml文件中,我们...

    MyBatis传入集合 list 数组 map参数的写法

    当传入的参数是一个List时,`&lt;foreach&gt;`标签的`collection`属性应设置为`list`。例如,以下是一个查询员工的例子,其中`list`参数包含员工ID的列表: ```xml &lt;select id="getEmployeesListParams" resultType=...

Global site tag (gtag.js) - Google Analytics