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数组。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |