使用方法:
JSONObject jsonObject=XmlToJson.convertXmlIntoJSONObject(xml);
方法源码:
package com.demo;
import java.io.IOException;
import java.io.StringWriter;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;
public class XmlToJson {
/**
* 传入字符串格式的xml
* 将xml格式<a/>装换成<a></a>
* 再将xml装换成属性没有带"@"的JSONObject格式
* @author fyWang
* @data 2019-03-29
* */
public static JSONObject convertXmlIntoJSONObject (String xml){
JSONObject jsonObject=new JSONObject();
try {
Document xmlDocument = DocumentHelper.parseText(xml);
OutputFormat format = new OutputFormat();
format.setEncoding("UTF-8");
format.setExpandEmptyElements(true);
StringWriter out = new StringWriter();
XMLWriter writer = new XMLWriter(out, format);
try {
writer.write(xmlDocument);
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
//out.toString() 此结果为xml的<a></a>格式
jsonObject=XML.toJSONObject(out.toString());
} catch (DocumentException e1) {
e1.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject;
}
}
测试:
public static void main(String[] args) {
String xml="<?xml version='1.0' encoding='UTF-8'?>"+
"<data>"+
"<name>王甫岩</name>"+
"<sex>男</sex>"+
"<age>23</age>"+
"<address key='地址' value='广东广州' />"+
"</data>";
System.out.println("原XML:\n"+xml+"\n");
System.out.println("XML装换的JSON:\n"+XmlToJson.convertXmlIntoJSONObject(xml));
}
测试结果:
原XML:
<?xml version='1.0' encoding='UTF-8'?><data><name>王甫岩</name><sex>男</sex><age>23</age><address key='地址' value='广东广州' /></data>
XML装换的JSON:
{"data":{"sex":"男","address":{"value":"广东广州","key":"地址"},"age":"23","name":"王甫岩"}}