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读取xml63 }
64return result;
65 }
66
67 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论