在很多開發場景中,我們需要把XML格式的數據轉換成JSON格式的數據。DOM4J是一個強大的XML解析工具,可以方便地將XML格式的數據解析成Java對象或者JSON格式的數據。
下面是一個基于DOM4J解析XML并返回JSON的簡單示例:
public static JSONObject xml2Json(String xml) throws DocumentException { Document doc = DocumentHelper.parseText(xml); JSONObject obj = new JSONObject(); if (doc != null) { Element root = doc.getRootElement(); element2Json(root, obj);//將XML轉換為JSON對象 } return obj; } private static void element2Json(Element el, JSONObject obj) { ListlistAttr = el.attributes();//獲取當前節點的所有屬性 for (Attribute attr : listAttr) { obj.put(attr.getName(), attr.getValue());//將屬性加入JSON對象中 } List elements = el.elements();//獲取當前節點的所有子節點 if (elements.isEmpty() && StringUtils.isNotEmpty(el.getTextTrim())) { obj.put(el.getName(), el.getText());//當前節點沒有子節點,將其作為屬性加入JSON對象中 } else { for (Element e : elements) { JSONObject jsonObject = new JSONObject(); element2Json(e, jsonObject);//遞歸解析XML子節點 Object value = obj.get(e.getName()); if (value != null) { JSONArray array; if (value instanceof JSONObject) { array = new JSONArray(); array.add(value); obj.put(e.getName(), array); } else if (value instanceof JSONArray) { array = (JSONArray) value; array.add(jsonObject); } } else { obj.put(e.getName(), jsonObject); } } } }
在上述代碼中,我們定義了一個xml2Json方法,它的作用是把XML格式的字符串轉換成JSON格式的對象。該方法首先使用DOM4J把XML字符串解析成Document對象,然后遍歷Document對象的節點,將節點轉換成對應的JSON對象并添加到父JSON對象中。
通過本文的介紹,相信大家已經明白了如何使用DOM4J解析XML并返回JSON數據。如果您有更好的實現方式,請在評論中分享。