加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml转json

发布时间:2020-12-16 05:41:49 所属栏目:百科 来源:网络整理
导读:通过以上代码,可以实现xml转json,把特定xml节点转换成json数组! /** * 转换一个xml格式的字符串到json格式 * * @param xml * xml格式的字符串 * @return 成功返回json 格式的字符串;失败反回null */ @SuppressWarnings("unchecked") public static String

通过以上代码,可以实现xml转json,把特定xml节点转换成json数组!

	 /** 
     * 转换一个xml格式的字符串到json格式 
     *  
     * @param xml 
     *            xml格式的字符串 
     * @return 成功返回json 格式的字符串;失败反回null 
     */  
    @SuppressWarnings("unchecked")  
    public static  String xml2JSON(String xml) {  
        JSONObject obj = new JSONObject();  
        List list=new ArrayList();
        try {  
        	list.add("CustomerRemark");
        	list.add("UserRemark");
        	list.add("AccountRemark");
        	list.add("ProductInfo");
        	list.add("ProCompInfo");
        	list.add("BusiID");
        	list.add("SpclSvcInfo");
        	list.add("ActivityInfo");
        	list.add("ActPara");
        	list.add("FeeInfo");
            InputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));  
            SAXBuilder sb = new SAXBuilder();  
            Document doc = sb.build(is);  
            Element root = doc.getRootElement();  
            obj.put(root.getName(),iterateElement(root,list));  
            return obj.toString();  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
  
    /** 
     * 转换一个xml格式的字符串到json格式 
     *  
     * @param file 
     *            java.io.File实例是一个有效的xml文件 
     * @return 成功反回json 格式的字符串;失败反回null 
     */  
    @SuppressWarnings("unchecked")  
    public static String xml2JSON(File file) {  
        JSONObject obj = new JSONObject();  
        List list=new ArrayList();
        try {  
        	//CustomerRemark,UserRemark,AccountRemark,ProductInfo,ProCompInfo,BusiID,SpclSvcInfo,ActivityInfo,ActPara,FeeInfo
        	list.add("CustomerRemark");
        	list.add("UserRemark");
        	list.add("AccountRemark");
        	list.add("ProductInfo");
        	list.add("ProCompInfo");
        	list.add("BusiID");
        	list.add("SpclSvcInfo");
        	list.add("ActivityInfo");
        	list.add("ActPara");
        	list.add("FeeInfo");
            SAXBuilder sb = new SAXBuilder();  
            Document doc = sb.build(file);  
            Element root = doc.getRootElement();  
            obj.put(root.getName(),list));  
            return obj.toString();  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
  
    /** 
     * 一个迭代方法 
     *  
     * @param element 
     *            : org.jdom.Element 
     * @return java.util.Map 实例 
     */  
    @SuppressWarnings("unchecked")  
    private static Map  iterateElement(Element element,List xlist) {  
        List jiedian = element.getChildren();  
        Element et = null;  
        Map obj = new HashMap();  
        List list = null;  
        for (int i = 0; i < jiedian.size(); i++) {  
            list = new LinkedList();  
            et = (Element) jiedian.get(i);  
            if (et.getTextTrim().equals("")) {  
                if (et.getChildren().size() == 0)  
                    continue;  
                if (obj.containsKey(et.getName())) {  
                    list = (List) obj.get(et.getName());  
                }  
                list.add(iterateElement(et,xlist));  
                if(xlist.contains(et.getName())){
                	obj.put(et.getName(),list);  
                }else{
                	obj.put(et.getName(),list.get(0));  
                }
                
            } else {  
                if (obj.containsKey(et.getName())) {  
                    list = (List) obj.get(et.getName());  
                }  
                list.add(et.getTextTrim());  
                
                if(xlist.contains(et.getName())){
                	obj.put(et.getName(),list.get(0));  
                } 
            }  
        }  
        return obj;  
    }  
    
通过以上代码,可以实现把特定的xml节点转换成json数组。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读