123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- package com.qtzl.alterSales.manager.tools;
-
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import org.jdom.Document;
- import org.jdom.Element;
- import org.jdom.JDOMException;
- import org.jdom.input.SAXBuilder;
- import org.xml.sax.InputSource;
-
- import java.io.File;
- import java.io.IOException;
- import java.io.StringReader;
- import java.util.*;
- import java.util.Map.Entry;
-
- public class JsonToXmlUtil {
-
- /**
- * xml转json字符串 注意:路径和字符串二传一另外一个传null<br>
- * 方 法 名:xmlToJson <br>
- * @param xmlPath xml路径(和字符串二传一,两样都传优先使用路径)
- * @param xmlStr xml字符串(和路径二传一,两样都传优先使用路径)
- * @return String
- * @throws IOException
- * @throws JDOMException
- */
- @SuppressWarnings("unchecked")
- public static String xmlToJson(String xmlPath,String xmlStr){
- SAXBuilder sbder = new SAXBuilder();
- Map<String, Object> map = new HashMap<String, Object>();
- Document document;
- try {
- if(xmlPath!=null){
- //路径
- document = sbder.build(new File(xmlPath));
- }else if(xmlStr!=null){
- //xml字符
- StringReader reader = new StringReader(xmlStr);
- InputSource ins = new InputSource(reader);
- document = sbder.build(ins);
- }else{
- return "{}";
- }
- //获取根节点
- Element el = document.getRootElement();
- List<Element> eList = el.getChildren();
- Map<String, Object> rootMap = new HashMap<String, Object>();
- //得到递归组装的map
- rootMap = xmlToMap(eList,rootMap);
- map.put(el.getName(), rootMap);
- //将map转换为json 返回
- return JSON.toJSONString(map);
- } catch (Exception e) {
- return "{}";
- }
- }
- /**
- * json转xml<br>
- * 方 法 名:jsonToXml <br>
- * @param json
- * @return String
- */
- public static String jsonToXml(String json){
- try {
- StringBuffer buffer = new StringBuffer();
- buffer.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
- buffer.append("<base>");
- JSONObject jObj = JSON.parseObject(json);
- jsonToXmlstr(jObj,buffer);
- buffer.append("</base>");
- return buffer.toString();
- } catch (Exception e) {
- e.printStackTrace();
- return "";
- }
- }
- /**
- * json转str<br>
- * 方 法 名:jsonToXmlstr <br>
- * @param jObj
- * @param buffer
- * @return String
- */
- public static String jsonToXmlstr(JSONObject jObj,StringBuffer buffer ){
- Set<Entry<String, Object>> se = jObj.entrySet();
- for( Iterator<Entry<String, Object>> it = se.iterator(); it.hasNext(); )
- {
- Entry<String, Object> en = it.next();
- if(en.getValue() != null && en.getValue().getClass().getName().equals("com.alibaba.fastjson.JSONObject")){
- buffer.append("<"+en.getKey()+">");
- JSONObject jo = jObj.getJSONObject(en.getKey());
- jsonToXmlstr(jo,buffer);
- buffer.append("</"+en.getKey()+">");
- }else if(en.getValue() != null && en.getValue().getClass().getName().equals("com.alibaba.fastjson.JSONArray")){
- if (en.getKey().equals("extproperties")) {
- JSONArray ja = jObj.getJSONArray(en.getKey());
- Iterator<Object> it1 = ja.iterator();
- List<String> list=new ArrayList<String>();
- while (it1.hasNext()) {
- String ob = (String) it1.next();
- System.out.println(ob);
- }
- }else {
- JSONArray jarray = jObj.getJSONArray(en.getKey());
- for (int i = 0; i < jarray.size(); i++) {
- buffer.append("<"+en.getKey()+">");
- JSONObject jsonobject = jarray.getJSONObject(i);
- jsonToXmlstr(jsonobject,buffer);
- buffer.append("</"+en.getKey()+">");
- }
- }
-
- }else if(en.getValue() != null && en.getValue().getClass().getName().equals("java.lang.String")){
- buffer.append("<"+en.getKey()+">"+en.getValue());
- buffer.append("</"+en.getKey()+">");
- } else if(en.getValue() != null && en.getValue().getClass().getName().equals("java.lang.Integer")){
- buffer.append("<"+en.getKey()+">"+en.getValue());
- buffer.append("</"+en.getKey()+">");
- }else{
- buffer.append("<"+en.getKey()+">"+"");
- buffer.append("</"+en.getKey()+">");
- }
-
- }
- return buffer.toString();
- }
-
-
- /**
- * 节点转map<br>
- * 方 法 名:xmlToMap <br>
- * @param eList
- * @param map
- * @return Map<String,Object>
- */
- @SuppressWarnings("unchecked")
- public static Map<String, Object> xmlToMap(List<Element> eList,Map<String, Object> map){
- for (Element e : eList) {
- Map<String, Object> eMap = new HashMap<String, Object>();
- List<Element> elementList = e.getChildren();
- if(elementList!=null&&elementList.size()>0){
- eMap = xmlToMap(elementList,eMap);
- Object obj = map.get(e.getName());
- if(obj!=null){
- List<Object> olist = new ArrayList<Object>();
- if(obj.getClass().getName().equals("java.util.HashMap")){
- olist.add(obj);
- olist.add(eMap);
-
- }else if(obj.getClass().getName().equals("java.util.ArrayList")){
- olist = (List<Object>)obj;
- olist.add(eMap);
- }
- map.put(e.getName(), olist);
- }else{
- map.put(e.getName(), eMap);
- }
- }else{
- map.put(e.getName(), e.getValue());
- }
- }
- return map;
- }
-
-
-
-
- }
|