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;
}
}