1 import java.util.HashMap; 2 import java.util.LinkedList; 3 import java.util.List; 4 import java.util.Map; 5 6 import org.dom4j.Document; 7 import org.dom4j.DocumentHelper; 8 import org.dom4j.Element; 9 10 import net.sf.json.JSONObject; 11 12 public class Xml2JsonUtil { 13 14 15 /** 16 * 转换一个xml格式的字符串到json格式 17 * 18 * @param xml 19 * xml格式的字符串 20 * @return 成功返回json 格式的字符串;失败反回null 21 */ 22 @SuppressWarnings("unchecked") 23 public static String xml2JSON(String xml) { 24 JSONObject obj = new JSONObject(); 25 try { 26 Document doc = DocumentHelper.parseText(xml); 27 Element root = doc.getRootElement(); 28 obj.put(root.getName(), iterateElement(root)); 29 return obj.toString(); 30 } catch (Exception e) { 31 e.printStackTrace(); 32 return null; 33 } 34 } 35 36 /** 37 * 一个迭代方法 38 * 39 * @param element 40 * @return java.util.Map 实例 41 */ 42 @SuppressWarnings("unchecked") 43 private static Map iterateElement(Element element) { 44 List jiedian = element.elements(); 45 Element et = null; 46 Map obj = new HashMap(); 47 Object temp; 48 List list = null; 49 for (int i = 0; i < jiedian.size(); i++) { 50 list = new LinkedList(); 51 et = (Element) jiedian.get(i); 52 if (et.getTextTrim().equals("")) { 53 if (et.elements().size() == 0) 54 continue; 55 if (obj.containsKey(et.getName())) { 56 temp = obj.get(et.getName()); 57 if(temp instanceof List){ 58 list = (List)temp; 59 list.add(iterateElement(et)); 60 }else if(temp instanceof Map){ 61 list.add((HashMap)temp); 62 list.add(iterateElement(et)); 63 }else{ 64 list.add((String)temp); 65 list.add(iterateElement(et)); 66 } 67 obj.put(et.getName(), list); 68 }else{ 69 obj.put(et.getName(), iterateElement(et)); 70 } 71 } else { 72 if (obj.containsKey(et.getName())) { 73 temp = obj.get(et.getName()); 74 if(temp instanceof List){ 75 list = (List)temp; 76 list.add(et.getTextTrim()); 77 }else if(temp instanceof Map){ 78 list.add((HashMap)temp); 79 list.add(iterateElement(et)); 80 }else{ 81 list.add((String)temp); 82 list.add(et.getTextTrim()); 83 } 84 obj.put(et.getName(), list); 85 }else{ 86 obj.put(et.getName(), et.getTextTrim()); 87 } 88 89 } 90 91 } 92 return obj; 93 } 94 95 // 测试 96 public static void main(String[] args) { 97 String xmlStr = "<getOmElement>" + 98 "<HEADER>" + 99 "<SOURCEID>MDM</SOURCEID>" + 100 "<SOURCEID>MDM</SOURCEID>" + 101 "<myChild/>"+ 102 "<DESTINATIONID>DAXT</DESTINATIONID>" + 103 "<SIZE>1</SIZE>" + 104 "<TYPE>ADD</TYPE>" + 105 "<BO>ORG</BO>" + 106 "<CHECK>"+ 107 "checkCode" 108 +"</CHECK>"+ 109 "</HEADER>" + 110 "<REQUEST>" + 111 "<DATAROW>" + 112 "<ORGUUID>460c5239-13f662e8f67-2f1936027f000a1d675dd1399911234</ORGUUID>" + 113 "</DATAROW>" + 114 "<DATAROW>" + 115 "<ORGUUID>460c5239-13f662e8f67-2f1936027f000a1d675dd139991369c4</ORGUUID>" + 116 "</DATAROW>" + 117 "</REQUEST>" + 118 "</getOmElement>"; 119 120 System.out.println(Xml2JsonUtil.xml2JSON(xmlStr)); 121 } 122 }