import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jUtil {
public final static Logger logger = LogManager.getLogger(Dom4jUtil.class);
/**
* String转Document
* @param xml
* @return
*/
public static Document getDocument(String xml){
Document document = null;
try {
SAXReader reader = new SAXReader();
InputStream in = new ByteArrayInputStream(xml.getBytes("utf-8"));
InputStreamReader strInStream = new InputStreamReader(in, "utf-8");
document = reader.read(strInStream);
} catch (Exception e) {
logger.error("XML不合法! :", e);
}
return document;
}
/**
* 递归解析
* @param node
* @param map
*/
public static void nodesToMap(Element node,Map<String,String> map) {
if (!(node.getTextTrim().equals(""))) {
map.put(node.getName(), node.getText());
}
Iterator<Element> it = node.elementIterator();
while (it.hasNext()){
Element el = it.next();
nodesToMap(el,map);
}
}
/**
* 无脑解析
* @param xml
* @return
*/
public static Map<String,String> getMap(String xml){
Document document =Dom4jUtil.getDocument(xml);
Element node = document.getRootElement();
Map<String,String> map = new HashMap<String,String>();
nodesToMap(node,map);
return map;
}
/**
* 解析多个相同兄弟节点
* @param elements
* @return
*/
public static List<Map<String,String>> nodeToList(Element elements ){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
List<Element> childElements = elements.elements();
for (Element element : childElements) {
Map<String,String> map = new HashMap<String,String>();
nodesToMap(element , map);
map.put(element.getName(), element.getText());
list.add(map);
}
return list;
}
/**
* 解析角色参数
* @param xml
* @return
*/
public static List<Map<String,String>> parseRoles(String xml){
Document document =Dom4jUtil.getDocument(xml);
Element root = document.getRootElement();
Element rolesElement = root.element("Value").element("Roles");
return nodeToList(rolesElement);
}
}
转载于:https://my.oschina.net/u/1767754/blog/403859