XML转fastJSON
1import java.util.List;
2
3import org.dom4j.Attribute;
4import org.dom4j.Document;
5import org.dom4j.DocumentException;
6import org.dom4j.DocumentHelper;
7import org.dom4j.Element;
8
9import com.alibaba.fastjson.JSONArray;
10import com.alibaba.fastjson.JSONObject;
11
12/**
13 * xml⼯具类
14 * @author sleep
15 * @date 2016-09-13
16*/
17public class XmlTool {
18
19/**
20    * String 转 org.dom4j.Document
21    * @param xml
22    * @return
23    * @throws DocumentException
24*/
25public static Document strToDocument(String xml) throws DocumentException {
26return DocumentHelper.parseText(xml);
27    }
28
29/**
30    * org.dom4j.Document 转  com.alibaba.fastjson.JSONObject
31    * @param xml
32    * @return
33    * @throws DocumentException
34*/
35public static JSONObject documentToJSONObject(String xml) throws DocumentException { 36return elementToJSONObject(strToDocument(xml).getRootElement());
37    }
38
39/**
40    * org.dom4j.Element 转  com.alibaba.fastjson.JSONObject
41    * @param node
42    * @return
43*/
44public static JSONObject elementToJSONObject(Element node) {
45        JSONObject result = new JSONObject();
46// 当前节点的名称、⽂本内容和属性
47        List<Attribute> listAttr = node.attributes();// 当前节点的所有属性的list
48for (Attribute attr : listAttr) {// 遍历当前节点的所有属性
49            result.Name(), Value());
50        }
51// 递归遍历当前节点所有的⼦节点
52        List<Element> listElement = node.elements();// 所有⼀级⼦节点的list
53if (!listElement.isEmpty()) {
54for (Element e : listElement) {// 遍历所有⼀级⼦节点
55if (e.attributes().isEmpty() && e.elements().isEmpty()) // 判断⼀级节点是否有属性和⼦节点
56                    result.Name(), e.getTextTrim());// 沒有则将当前节点作为上级节点的属性对待
57else {
58if (!Name())) // 判断⽗节点是否存在该⼀级节点名称的属性
59                        result.Name(), new JSONArray());// 没有则创建
60                    ((JSONArray) (e.getName())).add(elementToJSONObject(e));// 将该⼀级节点放⼊该节点名称的属性对应的值中
61                }
62            }
dom4j读取xml
63        }
64return result;
65    }
66
67 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。