importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;public classXmlUtil {/*** 接收xml文件字符串,返回一个Map,其包含xml中所有叶节点的K-V,举例:
* 入参:
*
*
* aa
* aaa
*
*
* bb
* bbb
*
* c
*
* 返回:
* {aa=aa, aaa=aaa, bb=bb, bbb=bbb, c=c}
*
*@paramxmlStr xml文件字符串
*@return
*/
public static Mapxml2Map(String xmlStr) {
Map map = new HashMap();try{//将xml格式的字符串转换成Document对象
Document doc =DocumentHelper.parseText(xmlStr);//获取根节点
Element root =doc.getRootElement();//将xml的所有叶节点的name-value封装进Map
leafNode2Map(map, root);
}catch(Exception e) {
e.printStackTrace();
}returnmap;
}/*** 将xml的所有叶节点的name-value封装进Map
*
*@parammap
*@paramnode*/@SuppressWarnings("unchecked")private static void leafNode2Map(Mapmap, Element node) {
List elements =node.elements();if (elements == null || elements.size() == 0) {
map.put(node.getName(), node.getTextTrim());
}else{for(Element element : elements) {//递归
leafNode2Map(map, element);
}
}
}public static voidmain(String[] args) {
String xmlStr= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>aaaaabbbbbc";
Map map =xml2Map(xmlStr);
System.out.println(map);//{aa=aa, aaa=aaa, bb=bb, bbb=bbb, c=c}
}
}