/**
* xml字符串转list集合
* @param xml
* @return
*/
public static List<Map<String,Object>> xmlToList(String xml){
if(null == xml || "".equals(xml)){
Logger.getLogger(XmlUtil.class).info("xml为空");
return null;
}
List<Map<String, Object>> list = new ArrayList();
xml =xml.replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "").replace("\n","").replace(" ","");;
SAXReader reader = new SAXReader();
Document document = null;
try {
Logger.getLogger(XmlUtil.class).info(xml);
document = reader.read(new ByteArrayInputStream(xml.getBytes("utf-8")));
Element root = document.getRootElement();//获取根元素
List<Element> childElements = root.elements();//获取当前元素下的全部子元素
for (Element child : childElements) {//循环输出全部信息
Map<String, Object> map = new HashMap();//每个实体
List<Element> infos = child.elements();//每个对象信息
for (Element info : infos) {
String name = info.getName();//获取当前元素名
String text = info.getText();//获取当前元素值
map.put(name,text);
}
list.add(map);
map=null;//回收map
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
这里面有两个关键点:
- 字符串空格和行,必须用空字符串替换她们,如下:
xml =xml.replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "").replace("\n","").replace(" ","");
- 字符串字节码,必须转为utf-8,如下:
document = reader.read(new ByteArrayInputStream(xml.getBytes("utf-8")));