阅读 120

xml、map、json相互转换

练习四

1、了解xml 格式以及解析方法,掌握xml与map互转的方法

2、了解json格式以及解析方法,掌握json与map互转的方法

3、新建测试方法,将以下xml格式报文转换成json格式报文

以下一个练习将会包含到xml2map、map2json,所以间接形成了xml2json。

反向转换也可以参考转换时用到的工具类和方法

interBoss.xml文件

点击查看代码


    
        
          
            IndictSeq
            20210726CSVC2700000003
          
          
            CallerNo
            18271403993
          
          
            CalledNo
            10086
          
          
            MSISDN
            18271403993
          
          
            SubsName
            *树宏
          
          
            SubsLevel
            04
          
          
            SubsBrand
            01
          
          
            SvcTypeId
            10010105020101
          
          
            UrgentId
            03
          
          
            HomeProv
            270
          
        ]]>
    

实现过程Xml2Json.java

点击查看代码
public class Xml2Json {
    public static void main(String[] args) {
        Map map = new HashMap();
        try {
            InputStream is = new FileInputStream(new File("src/main/resources/test/interBOSS.xml"));
            SAXReader sax = new SAXReader(); //创建解析器
            Document doc = sax.read(is); //read方法将配置读到内存中,创建对应的Document[org.dom4j]对象树
            Element root = doc.getRootElement(); //获取XML文档的根节点对象
            //遍历根节点
            HashMap rootMap = new HashMap<>();
            HashMap SvcContMap = new HashMap<>();
            HashMap CDATAMap = new HashMap<>();
            HashMap SvcRootMap = new HashMap<>();
            List> itemMapList = new ArrayList<>();

            Map interBOSSMap = new HashMap<>();
            List> svcContList = new ArrayList<>();

            for (Iterator rootIter = root.elementIterator(); rootIter.hasNext(); ) {
                Map svcContMap = new HashMap<>();
                Element svcContElt = rootIter.next();
                Document doc2 = DocumentHelper.parseText(svcContElt.getText());
                Element root2 = doc2.getRootElement();
                List> svcRootList = new ArrayList<>();
                for (Iterator svcContIter = root2.elementIterator(); svcContIter.hasNext(); ) {
                    Map svcRootMap = new HashMap<>();
                    Element itemEle = svcContIter.next();
                    Map itemMap = new HashMap<>();
                    Map itemSubMap = new HashMap<>();
                    for (Iterator itemIter = itemEle.elementIterator(); itemIter.hasNext(); ) {
                        Element svcRootElt = itemIter.next();
                        itemSubMap.put(svcRootElt.getName(), svcRootElt.getText());
                    }
                    itemMap.put("Item", itemSubMap);
                    svcRootList.add(itemMap);
                }
                if(svcRootList.size() == 1){
                    svcContMap.put("SvcRoot", svcRootList.get(0));
                }else{
                    svcContMap.put("SvcRoot", svcRootList);
                }
                svcContList.add(svcContMap);
            }

            if(svcContList.size() == 1){
                interBOSSMap.put("SvcCont", svcContList.get(0));
            }else {
                interBOSSMap.put("SvcCont", svcContList);
            }

            rootMap.put("InterBOSS", interBOSSMap);
            System.out.println("map对象:" + rootMap.toString());
            //map转换为json。从而实现xml到json的转换
            String strMap2Json = JsonUtils.javaMap2Json(rootMap);
            System.out.println("Json字符串:" + strMap2Json);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

执行实现结果:

  "InterBOSS": {
        "SvcCont": {
            "SvcRoot": [
                {
                    "Item": {
                        "Name": "IndictSeq",
                        "Value": "20210726CSVC2700000003"
                    }
                },
                {
                    "Item": {
                        "Name": "CallerNo",
                        "Value": "*************"
                    }
                },
                {
                    "Item": {
                        "Name": "CalledNo",
                        "Value": "10086"
                    }
                },
                {
                    "Item": {
                        "Name": "MSISDN",
                        "Value": "*************"
                    }
                },
                {
                    "Item": {
                        "Name": "SubsName",
                        "Value": "**********************"
                    }
                },
                {
                    "Item": {
                        "Name": "SubsLevel",
                        "Value": "04"
                    }
                },
                {
                    "Item": {
                        "Name": "SubsBrand",
                        "Value": "01"
                    }
                },
                {
                    "Item": {
                        "Name": "SvcTypeId",
                        "Value": "10010105020101"
                    }
                },
                {
                    "Item": {
                        "Name": "UrgentId",
                        "Value": "03"
                    }
                },
                {
                    "Item": {
                        "Name": "HomeProv",
                        "Value": "270"
                    }
                }
            ]
        }
    }
},

 

原文:https://www.cnblogs.com/dagwj/p/15107880.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐