用dom4j SAXReader解析xml檔案及字串

weixin_34365417發表於2016-09-27

1.解析檔案

/**
* 解析發來的請求(XML)
*
* @param request
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {
// 將解析結果儲存在HashMap中
Map<String, String> map = new HashMap<String, String>();

// 從request中取得輸入流
InputStream inputStream = request.getInputStream();
// 讀取輸入流
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
// 得到xml根元素
Element root = document.getRootElement();
// 得到根元素的所有子節點
List<Element> elementList = root.elements();

// 遍歷所有子節點
for (Element e : elementList)
map.put(e.getName(), e.getText());

// 釋放資源
inputStream.close();
inputStream = null;

return map;
}

2.解析字串

/**
* 解析XML
*
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static Map<String, String> parseXml(String xml) throws Exception {
// 將解析結果儲存在HashMap中
Map<String, String> map = new HashMap<String, String>();

// 讀取輸入流
SAXReader reader = new SAXReader();
Document document = reader.read(new ByteArrayInputStream(xml.getBytes("utf-8")));

// 得到xml根元素
Element root = document.getRootElement();
// 得到根元素的所有子節點
List<Element> elementList = root.elements();

// 遍歷所有子節點
for (Element e : elementList)
map.put(e.getName(), e.getText());

return map;
}

private static void parse(List<Element> elementList, Map map) {
// 遍歷所有子節點
for (Element e : elementList) {
if(e.hasContent()){
parse(e.elements(), map);
}
map.put(e.getName(), e.getText());
}
}

相關文章