package com.vci.ubcs.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> iter = jo.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) 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(""); } //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(""); } } //值为空 else{ xmlStr.append(gt); xmlStr.append("<"); xmlStr.append(key); xmlStr.append(">"); xmlStr.append(""); xmlStr.append(""); } } return xmlStr.toString(); } public static String jsonToXml(JSONObject jo0) { String xml = jsontoxml(jo0, ""); return xml; } }