日常总结 -- dom4j & fastjson篇

dom4j: 字符串与文档互转; 创建文档、节点、属性;获取节点、属性值;

1. 创建文档Document:
 Document document = DocumentHelper.createDocument();

2.创建根节点:   
Element root=document.addElement("root");

3.创建子节点(并设置文本内容):  
Element book=root.addElement("book")[.setText("100")];

4.添加节点属性:  book.addAttribute("type","science"); 

5.文档转字符串:
String str = document.asXML();

6.字符串转文档:
Document document=DocumentHelper.parseText(str);

7.获取节点:
Document document = DocumentHelper.parseText(str);->
Element root=document.getRootElement(); -- 根节点
Element book=root.element("book"); -- 子节点;

8.获取节点属性值:
String type=book.attributeValue("type");

9.xpath: /DOCUMENT/BODY

List<Element> children = document.selectNodes(xpath);

 

fastjson: 字符串与JSON互转;JSON、JSONObject、JSONArray;

1.简单对象型: String OBJ_STR = "{\"name\":\"lily\",\"age\":12}";

2.简单对象型: String OBJ_STR = "{\"name\":\"lily\",\"age\":12}";

3. 数组类型: String ARRAY_STR = "[{\"name\":\"lily\",\"age\":12},  {\"name\":\"lucy\",\"age\":15}]";

4.复杂格式: String JSON_STR ="{\"course\":{\"name\":\"english\",\"code\":1270},
            \"stu\":[{\"name\":\"lily\",\"age\":12},{\"name\":\"lucy\",\"age\":15}]}";
        JSONObject jsonObject = JSON.parseObject(OBJ_STR);
        JSONArray jsonArray = JSON.parseArray(JARRAY_STR);

5. JSON转字符串: String str = jsonArray.toJSONString();

6.jsonpath: $.message.body

Object result = JSONPath.eval(jsonObject, jsonpath);

 

XML与JSON互转

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import java.util.Iterator;
import java.util.List;

public class Json2Xml {

    /**
     * com.alibaba.fastjson.JSONObject 转 org.dom4j.document
     */
    public static Document jsonToXml(JSONObject jsonObject) {
        Document document = DocumentHelper.createDocument();
        Element root;
        Iterator<String> iter = jsonObject.keySet().iterator();
        if (iter.hasNext()) {
            String key = iter.next();
            root = document.addElement(key);
            jsonToElement(jsonObject, root);
        }
        return document;
    }

    /**
     * @param jsonObject
     * @param element
     * @return
     */
    public static Element jsonToElement(JSONObject jsonObject, Element element) {

        Object jsonNode = jsonObject.get(element.getName());
        if (jsonNode instanceof JSONArray) {
            for (JSONObject childrenJson : (List<JSONObject>) jsonNode) {
                addElement(childrenJson, element);
            }
        } else if (jsonNode instanceof JSONObject) {
            JSONObject childrenJson = (JSONObject) jsonNode;
            addElement(childrenJson, element);
        } else {
            // 递归出口
            element.setText(jsonNode.toString());
        }
        return element;
    }

    /**
     * 1.获取childrenJson的key值, 作为children的节点名
     * 2.转换childrenJson的value,将children添加到element(递归)
     *
     * @param childrenJson
     * @param element
     * @return
     */
    private static Element addElement(JSONObject childrenJson, Element element) {
        Iterator<String> iter = childrenJson.keySet().iterator();
        if (iter.hasNext()) {
            String key = iter.next();
            Element children = element.addElement(key);
            jsonToElement(childrenJson, children);
        }
        return element;
    }

    /**
     * org.dom4j.document 转 com.alibaba.fastjson.JSONObject
     *
     * @param document
     * @return
     */
    public JSONObject xmlToJson(Document document) {
        Element root = document.getRootElement(); // 根节点
        List<Element> elements = root.elements();
        JSONObject jsonObject = new JSONObject();
        return (JSONObject) jsonObject.put(root.getName(), this.elementToJson(elements));
    }

    /**
     * 1.参数element集合,遍历得到element
     * 2.获取element子节点集合,
     * 3.子集合>0递归,否则jsonobject.put(node.name, node.text)
     *
     * @param elements
     * @return
     */
    public static JSONObject elementToJson(List<Element> elements) {
        JSONObject jsonObject = new JSONObject();
        for (Element element : elements) {
            List<Element> children = element.elements();
            if (children.size() > 0) {
                jsonObject.put(element.getName(), elementToJson(children));
            } else {
                jsonObject.put(element.getName(), element.getText());
            }
        }
        return jsonObject;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值