public class Xml2JsonUtil {
/**
* 转换一个xml格式的字符串到json格式
*
* @param xml
* xml格式的字符串
* @return 成功返回json 格式的字符串;失败反回null
*/
@SuppressWarnings("unchecked")
public static String xml2JSON(String xml) {
JSONObject obj = new JSONObject();
try {
Document doc = DocumentHelper.parseText(xml);
Element root = doc.getRootElement();
obj.put(root.getName(), iterateElement(root));
return obj.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 一个迭代方法
*
* @param element
* @return java.util.Map 实例
*/
@SuppressWarnings("unchecked")
private static Map iterateElement(Element element) {
List jiedian = element.elements();
Element et = null;
Map obj = new HashMap();
Object temp;
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.elements().size() == 0) {
continue;
}
if (obj.containsKey(et.getName())) {
temp = obj.get(et.getName());
if(temp instanceof List){
list = (List)temp;
list.add(iterateElement(et));
}else if(temp instanceof Map){
list.add((HashMap)temp);
list.add(iterateElement(et));
}else{
list.add((String)temp);
list.add(iterateElement(et));
}
obj.put(et.getName(), list);
}else{
obj.put(et.getName(), iterateElement(et));
}
} else {
if (obj.containsKey(et.getName())) {
temp = obj.get(et.getName());
if(temp instanceof List){
list = (List)temp;
list.add(et.getTextTrim());
}else if(temp instanceof Map){
list.add((HashMap)temp);
list.add(iterateElement(et));
}else{
list.add((String)temp);
list.add(et.getTextTrim());
}
obj.put(et.getName(), list);
}else{
obj.put(et.getName(), et.getTextTrim());
}
}
}
return obj;
}
// 测试
public static void main(String[] args) {
String xmlStr="<xml><ToUserName><![CDATA[www]]></ToUserName><FromUserName><![CDATA[sys]]></FromUserName><CreateTime>1634090827</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[sys_approval_change]]></Event><AgentID>3010040</AgentID><ApprovalInfo><SpNo>202110130005</SpNo><SpName><![CDATA[客户审批]]></SpName><SpStatus>1</SpStatus><TemplateId><![CDATA[3WK6uhvQf]]></TemplateId><ApplyTime>1634090826</ApplyTime><Applyer><UserId><![CDATA[MM]]></UserId><Party><![CDATA[1]]></Party></Applyer><SpRecord><SpStatus>1</SpStatus><ApproverAttr>1</ApproverAttr><Details><Approver><UserId><![CDATA[MM]]></UserId></Approver><Speech><![CDATA[]]></Speech><SpStatus>1</SpStatus><SpTime>0</SpTime></Details><Details><Approver><UserId><![CDATA[MM]]></UserId></Approver><Speech><![CDATA[]]></Speech><SpStatus>1</SpStatus><SpTime>0</SpTime></Details></SpRecord><SpRecord><SpStatus>1</SpStatus><ApproverAttr>1</ApproverAttr><Details><Approver><UserId><![CDATA[MM]]></UserId></Approver><Speech><![CDATA[]]></Speech><SpStatus>1</SpStatus><SpTime>0</SpTime></Details></SpRecord><StatuChangeEvent>1</StatuChangeEvent></ApprovalInfo></xml>";
String s = Xml2JsonUtil.xml2JSON(xmlStr);
System.out.println(s);
}
}
xml格式的字符串到json格式
最新推荐文章于 2024-09-23 16:31:24 发布
这是一个Java类,实现了将XML格式的字符串转换为JSON格式的功能。主要方法`xml2JSON`接收XML字符串,通过`DocumentHelper.parseText`解析XML,然后使用递归方法`iterateElement`遍历元素并构建JSON对象。测试用例展示了如何使用该工具处理一个包含用户审批信息的XML示例。
摘要由CSDN通过智能技术生成