package org.springblade.code.utils;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import de.odysseus.staxon.json.JsonXMLConfig;
|
import de.odysseus.staxon.json.JsonXMLConfigBuilder;
|
import de.odysseus.staxon.json.JsonXMLOutputFactory;
|
import org.apache.commons.lang3.StringUtils;
|
|
import javax.xml.stream.XMLEventReader;
|
import javax.xml.stream.XMLEventWriter;
|
import javax.xml.stream.XMLInputFactory;
|
import java.io.IOException;
|
import java.io.StringReader;
|
import java.io.StringWriter;
|
import java.util.Iterator;
|
import java.util.Map;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
public class Json2XmlUtil {
|
|
/**
|
* @Description: xml convert to json
|
*/
|
public static String XmlToJson(String xmlString){
|
|
StringReader input = new StringReader(xmlString);
|
StringWriter output = new StringWriter();
|
try {
|
JsonXMLConfig config = new JsonXMLConfigBuilder().autoArray(true).autoPrimitive(true).prettyPrint(true).build();
|
XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(input);
|
XMLEventWriter writer = new JsonXMLOutputFactory(config).createXMLEventWriter(output);
|
writer.add(reader);
|
reader.close();
|
writer.close();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
try {
|
output.close();
|
input.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
return output.toString();
|
}
|
|
public static String replaceBlank(String jsonString) {
|
if(StringUtils.isEmpty(jsonString)){
|
return jsonString;
|
}
|
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
|
Matcher m = p.matcher(jsonString);
|
String dest = m.replaceAll("");
|
return dest;
|
}
|
|
public static String jsontoxml(JSONObject jo, String gt) {
|
StringBuffer xmlStr = new StringBuffer();
|
Iterator<Map.Entry<String, Object>> iter = jo.entrySet().iterator();
|
while (iter.hasNext()) {
|
Map.Entry<String, Object> entry = (Map.Entry<String, Object>) iter.next();
|
String key = entry.getKey().toString();
|
String val = entry.getValue().toString();
|
//值非空
|
if (StringUtils.isNotEmpty(val)) {
|
//JSON对象
|
if (val.substring(0, 1).equals("{")) {
|
xmlStr.append(gt);
|
xmlStr.append("<");
|
xmlStr.append(key);
|
xmlStr.append(">");
|
xmlStr.append(jsontoxml(JSONObject.parseObject(val), gt + ""));
|
xmlStr.append(gt);
|
xmlStr.append("</");
|
xmlStr.append(key);
|
xmlStr.append(">");
|
}
|
//JSON数组
|
else if (val.substring(0, 1).equals("[")) {
|
JSONArray ja = JSONArray.parseArray(val);
|
for (int i = 0; i < ja.size(); i++) {
|
JSONObject jo2 = new JSONObject();
|
jo2.put(key, ja.getJSONObject(i));
|
xmlStr.append(jsontoxml(jo2, gt + ""));
|
}
|
}
|
//JSON值
|
else {
|
xmlStr.append(gt);
|
xmlStr.append("<");
|
xmlStr.append(key);
|
xmlStr.append(">");
|
xmlStr.append(val);
|
xmlStr.append("</");
|
xmlStr.append(key);
|
xmlStr.append(">");
|
}
|
}
|
//值为空
|
else{
|
xmlStr.append(gt);
|
xmlStr.append("<");
|
xmlStr.append(key);
|
xmlStr.append(">");
|
xmlStr.append("");
|
xmlStr.append("</");
|
xmlStr.append(key);
|
xmlStr.append(">");
|
}
|
}
|
return xmlStr.toString();
|
}
|
|
public static String jsonToXml(JSONObject jo0) {
|
String xml = jsontoxml(jo0, "");
|
return xml;
|
}
|
}
|