ludc
2023-03-27 82a410d9ec7a5d15eed27e9990cff371feab43a1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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;
    }
}