一.打包(此處用的是eclipse)java
代碼以下,此如引用了某博主的代碼,因忘記地址,如博主發現此文,可私信我node
1 package com.example.Open; 2 import java.io.File; 3 import java.util.List; 4 import org.dom4j.Document; 5 import org.dom4j.DocumentException; 6 import org.dom4j.Element; 7 import org.dom4j.io.SAXReader; 8 9 import net.sf.json.JSONArray; 10 import net.sf.json.JSONObject; 11 public class XmlToJson { 12 13 /** 14 * 15 * @author: jinzy 16 * @date: 2018年7月18日下午5:39:20 17 * @description: 獲取xml文件 18 * @param xmlName 19 * @return 設定文件 20 * Document 返回類型 21 */ 22 public static Document getXml(String xmlName) { 23 String fileDir = System.getProperty("user.dir"); 24 String xmlFile = fileDir + "/reports/"+xmlName+".xml"; 25 System.out.println("xmlFile:"+xmlFile); 26 File file = new File(xmlFile); 27 SAXReader reader = new SAXReader(); 28 Document doc = null; 29 try { 30 doc = reader.read(file); 31 } catch (DocumentException e) { 32 // TODO Auto-generated catch block 33 e.printStackTrace(); 34 } 35 return doc; 36 } 37 38 /** 39 * 40 * @author: jinzy 41 * @date: 2018年7月18日下午5:40:01 42 * @description: 將xml轉換爲JSON對象 43 * @param xmlName 44 * @return 45 * @throws Exception 設定文件 46 * JSONObject 返回類型 47 */ 48 public static JSONObject xmltoJson(String xmlName) throws Exception { 49 JSONObject jsonObject = new JSONObject(); 50 //獲取根節點元素對象 51 Document document = getXml(xmlName); 52 Element root = document.getRootElement(); 53 iterateNodes(root, jsonObject); 54 return jsonObject; 55 } 56 57 /** 58 * 遍歷元素 59 * @param node 元素 60 * @param json 將元素遍歷完成以後放的JSON對象 61 */ 62 public static void iterateNodes(Element node,JSONObject json){ 63 //獲取當前元素的名稱 64 String nodeName = node.getName(); 65 //判斷已遍歷的JSON中是否已經有了該元素的名稱 66 if(json.containsKey(nodeName)){ 67 //該元素在同級下有多個 68 Object Object = json.get(nodeName); 69 JSONArray array = null; 70 if(Object instanceof JSONArray){ 71 array = (JSONArray) Object; 72 }else { 73 array = new JSONArray(); 74 array.add(Object); 75 } 76 //獲取該元素下全部子元素 77 List<Element> listElement = node.elements(); 78 if(listElement.isEmpty()){ 79 //該元素無子元素,獲取元素的值 80 String nodeValue = node.getTextTrim(); 81 array.add(nodeValue); 82 json.put(nodeName, array); 83 return ; 84 } 85 //有子元素 86 JSONObject newJson = new JSONObject(); 87 //遍歷全部子元素 88 for(Element e:listElement){ 89 //遞歸 90 iterateNodes(e,newJson); 91 } 92 array.add(newJson); 93 json.put(nodeName, array); 94 return ; 95 } 96 //該元素同級下第一次遍歷 97 //獲取該元素下全部子元素 98 List<Element> listElement = node.elements(); 99 if(listElement.isEmpty()){ 100 //該元素無子元素,獲取元素的值 101 String nodeValue = node.getTextTrim(); 102 json.put(nodeName, nodeValue); 103 return ; 104 } 105 //有子節點,新建一個JSONObject來存儲該節點下子節點的值 106 JSONObject object = new JSONObject(); 107 //遍歷全部一級子節點 108 for(Element e:listElement){ 109 //遞歸 110 iterateNodes(e,object); 111 } 112 json.put(nodeName, object); 113 114 } 115 116 /** 117 * 測試的main方法 118 */ 119 public static void main(String[] args) throws Exception { 120 JSONObject jsonObject = xmltoJson(args[0]); 121 System.out.println(jsonObject); 122 } 123 }
(1)工程名右擊,選擇「Export」json
(2)選擇「Runnable JAR file」dom
(3)選擇「Launch configuration」和jar要存放的路徑eclipse
(4)點擊「Finish」測試
二:運行spa
uacProdResult爲參數,多個參數用空格隔開code