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="<ROOT>"+
"<Status>00</Status>"+
"<ErrorMsg></ErrorMsg>"+
"<Data>"+
"<Row>"+
"<PERSONID>35020500200610000000000701355116</PERSONID>"+
"<XM>吴聪楠</XM><SFZH>350624198908052530</SFZH>"+
"</Row>"+
"<Row>"+
"<PERSONID>35020500200610000000000701355117</PERSONID>"+
"<XM>吴聪楠2</XM><SFZH>350624198908052531</SFZH>"+
"</Row>"+
"</Data>"+
"</ROOT>";
String str=Xml2JsonUtil.xmlToJSON(xml,1);
System.out.println(str);
}@SuppressWarnings("rawtypes