JAVA 实现XML与JSON 相互转换

1.把XML转为JSON格式

@SuppressWarnings("rawtypes")  
    public static  String xmlToJSON(String xml,int jsonType) {  
        JSONObject obj = new JSONObject();  
        try {  
            InputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));  
            SAXBuilder sb = new SAXBuilder();  
            Document doc = sb.build(is);  
            Element root = doc.getRootElement();  
            Map map=iterateElement(root);  
           obj.put(root.getName(),map);  
           return obj.toString();  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
  
  
@SuppressWarnings({ "unchecked", "rawtypes" })  
    private static Map  iterateElement(Element root) {  
        List childrenList = root.getChildren();  
        Element element = null;  
        Map map = new HashMap();  
        List list = null;  
        for (int i = 0; i < childrenList.size(); i++) {  
            list = new ArrayList();  
            element = (Element) childrenList.get(i);  
            if(element.getChildren().size()>0){  
                if(root.getChildren(element.getName()).size()>1){  
                    if (map.containsKey(element.getName())) {  
                        list = (List) map.get(element.getName());  
                    }  
                    list.add(iterateElement(element));  
                    map.put(element.getName(), list);  
                }else{  
                    map.put(element.getName(), iterateElement(element));  
                }  
            }else {  
                if(root.getChildren(element.getName()).size()>1){  
                    if (map.containsKey(element.getName())) {  
                        list = (List) map.get(element.getName());  
                    }  
                    list.add(element.getTextTrim());  
                    map.put(element.getName(), list);  
                }else{  
                    map.put(element.getName(), element.getTextTrim());  
                }  
            }  
        }  
          
        return map;  
    }  
      
  
  
    public static void main(String[] args) throws ParseException  
    {         
        String xml=""+  
        "00"+  
        ""+  
        ""+  
           ""+  
              "35020500200610000000000701355116"+  
              "吴聪楠350624198908052530"+  
           ""+  
           ""+  
              "35020500200610000000000701355117"+  
              "吴聪楠2350624198908052531"+  
              ""+  
          ""+  
    "";  
  
          
        String str=Xml2JsonUtil.xmlToJSON(xml,1);  
      System.out.println(str);  
}
原来的格式:

    <ROOT>0035020500200610000000000701355116吴聪楠35062419890805253035020500200610000000000701355117吴聪楠2350624198908052530

转换完的格式:

           {"ROOT":{"Data":{"Row":[{"SFZH":"350624198908052530","XM":"吴聪楠","PERSONID":"35020500200610000000000701355116"},{"SFZH":"350624198908052530","XM":"吴聪楠2","PERSONID":"35020500200610000000000701355117"}]},"Status":"00","ErrorMsg":""}}

2.JSON 转换为XML格式


public static  String JsonToXml(Object json)   
    {  
        if(json==null){  
            return null;  
        }else{  
         Element elements=new Element("xml");  
         getXMLFromObject(json,"xml",elements);  
         XMLOutputter xmlOut = new XMLOutputter();    
         String res=xmlOut.outputString(elements);  
         return res;  
       }  
    }  
  
  
private static void getXMLFromObject(Object obj,String tag,Element parent)  
    {  
        if(obj==null)  
            return;  
        Element child;  
        String eleStr;  
        Object childValue;  
        if(obj instanceof JSONObject)  
        {  
            JSONObject jsonObject=(JSONObject)obj;  
            for(Object temp:jsonObject.keySet())  
            {  
                eleStr=temp.toString();  
                childValue=jsonObject.get(temp);  
                child=new Element(eleStr);  
                if(childValue instanceof JSONArray)  
                    getXMLFromObject(childValue,eleStr,parent,count);  
                else{  
                    parent.addContent(child);  
                    getXMLFromObject(childValue,eleStr,child,count);  
                }  
            }  
        }else if(obj instanceof JSONArray){  
            JSONArray jsonArray=(JSONArray)obj;  
            for(int i=0;i

转换完的格式:

   

0035020500200610000000000701355117吴聪楠35062419890805253035020500200610000000000701355116吴聪楠2350624198908052531


 原来的格式:

     

{"ROOT":{"Status":"00","ErrorMsg":"","Data":{"Row":[{"PERSONID":"35020500200610000000000701355117","XM":"吴聪楠","SFZH":"350624198908052530"},{"PERSONID":"35020500200610000000000701355116","XM":"吴聪楠2","SFZH":"350624198908052531"}]}}}

转换完的格式:

   

0035020500200610000000000701355117吴聪楠35062419890805253035020500200610000000000701355116吴聪楠2350624198908052531



你可能感兴趣的:(java)