选装售后
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

JsonToXmlUtil.java 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package com.qtzl.alterSales.manager.tools;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import org.jdom.Document;
  6. import org.jdom.Element;
  7. import org.jdom.JDOMException;
  8. import org.jdom.input.SAXBuilder;
  9. import org.xml.sax.InputSource;
  10. import java.io.File;
  11. import java.io.IOException;
  12. import java.io.StringReader;
  13. import java.util.*;
  14. import java.util.Map.Entry;
  15. public class JsonToXmlUtil {
  16. /**
  17. * xml转json字符串 注意:路径和字符串二传一另外一个传null<br>
  18. * 方 法 名:xmlToJson <br>
  19. * @param xmlPath xml路径(和字符串二传一,两样都传优先使用路径)
  20. * @param xmlStr xml字符串(和路径二传一,两样都传优先使用路径)
  21. * @return String
  22. * @throws IOException
  23. * @throws JDOMException
  24. */
  25. @SuppressWarnings("unchecked")
  26. public static String xmlToJson(String xmlPath,String xmlStr){
  27. SAXBuilder sbder = new SAXBuilder();
  28. Map<String, Object> map = new HashMap<String, Object>();
  29. Document document;
  30. try {
  31. if(xmlPath!=null){
  32. //路径
  33. document = sbder.build(new File(xmlPath));
  34. }else if(xmlStr!=null){
  35. //xml字符
  36. StringReader reader = new StringReader(xmlStr);
  37. InputSource ins = new InputSource(reader);
  38. document = sbder.build(ins);
  39. }else{
  40. return "{}";
  41. }
  42. //获取根节点
  43. Element el = document.getRootElement();
  44. List<Element> eList = el.getChildren();
  45. Map<String, Object> rootMap = new HashMap<String, Object>();
  46. //得到递归组装的map
  47. rootMap = xmlToMap(eList,rootMap);
  48. map.put(el.getName(), rootMap);
  49. //将map转换为json 返回
  50. return JSON.toJSONString(map);
  51. } catch (Exception e) {
  52. return "{}";
  53. }
  54. }
  55. /**
  56. * json转xml<br>
  57. * 方 法 名:jsonToXml <br>
  58. * @param json
  59. * @return String
  60. */
  61. public static String jsonToXml(String json){
  62. try {
  63. StringBuffer buffer = new StringBuffer();
  64. buffer.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  65. buffer.append("<base>");
  66. JSONObject jObj = JSON.parseObject(json);
  67. jsonToXmlstr(jObj,buffer);
  68. buffer.append("</base>");
  69. return buffer.toString();
  70. } catch (Exception e) {
  71. e.printStackTrace();
  72. return "";
  73. }
  74. }
  75. /**
  76. * json转str<br>
  77. * 方 法 名:jsonToXmlstr <br>
  78. * @param jObj
  79. * @param buffer
  80. * @return String
  81. */
  82. public static String jsonToXmlstr(JSONObject jObj,StringBuffer buffer ){
  83. Set<Entry<String, Object>> se = jObj.entrySet();
  84. for( Iterator<Entry<String, Object>> it = se.iterator(); it.hasNext(); )
  85. {
  86. Entry<String, Object> en = it.next();
  87. if(en.getValue() != null && en.getValue().getClass().getName().equals("com.alibaba.fastjson.JSONObject")){
  88. buffer.append("<"+en.getKey()+">");
  89. JSONObject jo = jObj.getJSONObject(en.getKey());
  90. jsonToXmlstr(jo,buffer);
  91. buffer.append("</"+en.getKey()+">");
  92. }else if(en.getValue() != null && en.getValue().getClass().getName().equals("com.alibaba.fastjson.JSONArray")){
  93. if (en.getKey().equals("extproperties")) {
  94. JSONArray ja = jObj.getJSONArray(en.getKey());
  95. Iterator<Object> it1 = ja.iterator();
  96. List<String> list=new ArrayList<String>();
  97. while (it1.hasNext()) {
  98. String ob = (String) it1.next();
  99. System.out.println(ob);
  100. }
  101. }else {
  102. JSONArray jarray = jObj.getJSONArray(en.getKey());
  103. for (int i = 0; i < jarray.size(); i++) {
  104. buffer.append("<"+en.getKey()+">");
  105. JSONObject jsonobject = jarray.getJSONObject(i);
  106. jsonToXmlstr(jsonobject,buffer);
  107. buffer.append("</"+en.getKey()+">");
  108. }
  109. }
  110. }else if(en.getValue() != null && en.getValue().getClass().getName().equals("java.lang.String")){
  111. buffer.append("<"+en.getKey()+">"+en.getValue());
  112. buffer.append("</"+en.getKey()+">");
  113. } else if(en.getValue() != null && en.getValue().getClass().getName().equals("java.lang.Integer")){
  114. buffer.append("<"+en.getKey()+">"+en.getValue());
  115. buffer.append("</"+en.getKey()+">");
  116. }else{
  117. buffer.append("<"+en.getKey()+">"+"");
  118. buffer.append("</"+en.getKey()+">");
  119. }
  120. }
  121. return buffer.toString();
  122. }
  123. /**
  124. * 节点转map<br>
  125. * 方 法 名:xmlToMap <br>
  126. * @param eList
  127. * @param map
  128. * @return Map<String,Object>
  129. */
  130. @SuppressWarnings("unchecked")
  131. public static Map<String, Object> xmlToMap(List<Element> eList,Map<String, Object> map){
  132. for (Element e : eList) {
  133. Map<String, Object> eMap = new HashMap<String, Object>();
  134. List<Element> elementList = e.getChildren();
  135. if(elementList!=null&&elementList.size()>0){
  136. eMap = xmlToMap(elementList,eMap);
  137. Object obj = map.get(e.getName());
  138. if(obj!=null){
  139. List<Object> olist = new ArrayList<Object>();
  140. if(obj.getClass().getName().equals("java.util.HashMap")){
  141. olist.add(obj);
  142. olist.add(eMap);
  143. }else if(obj.getClass().getName().equals("java.util.ArrayList")){
  144. olist = (List<Object>)obj;
  145. olist.add(eMap);
  146. }
  147. map.put(e.getName(), olist);
  148. }else{
  149. map.put(e.getName(), eMap);
  150. }
  151. }else{
  152. map.put(e.getName(), e.getValue());
  153. }
  154. }
  155. return map;
  156. }
  157. }