对xml文件的解析dom4j

来源:互联网 发布:2016年淘宝刷单权重 编辑:程序博客网 时间:2024/05/21 19:31

本篇写于微信公众号的xml消息包的解析,通过HttpServletRequest请求来获得xml



package org.gxj.util;



import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import javax.servlet.http.HttpServletRequest;


import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class Dom4j_Xml_Util {


public static Map<String, String> dom4j_xml(HttpServletRequest request) throws DocumentException, IOException {
// 创建sax io流,用于读取xml人间
SAXReader read = new SAXReader();
// 将xml文件读取到获取的document对象中
org.dom4j.Document doc = read.read(request.getInputStream());
//org.dom4j.Document doc = read.read(new File("D:/jsdzworkspace/weixin-web/src/NewFile.xml"));测试方法是否好用
// 用Document对了来创建根节点
Element root = doc.getRootElement();

Map<String, String> map = new HashMap<String, String>();

map = recur_xml(root, map);//这块调用的下面的递归解析xml的方法

// //得到根节点下所有的子节点
// List<Element> elementslist = root.elements();
// //遍历list获得值封装到map中 先创建map对象
// Map<String,String>map = new HashMap<String,String>();
// for (Element element : elementslist) {
// map.put(element.getName(), element.getText());
// }
return map;
}


// 接下来的方法是递归获取xml文件中的值
public static Map<String, String> recur_xml(Element root, Map<String, String> map) {
// 每次进来的时候,都是一个根节点,通过根结点来获取他的子节点
List<Element> elementslist = root.elements();
// 然后判断子节点的大小
if (elementslist.size() == 0) {
map.put(root.getName(), root.getText());
} else {
for (Element element : elementslist) {
recur_xml(element, map);
}
}
return map;
}






}