xml转json

通过以上代码,可以实现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(), iterateElement(root,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);  
                }else{
                	obj.put(et.getName(), list.get(0));  
                } 
            }  
        }  
        return obj;  
    }  
    


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


 



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值