public static void main(String[] args) {
String ss = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" +
"\r\n" +
"<cancelPonLineData>\r\n" +
" <cancelPonLine>\r\n" +
" <fromReqHeaderId>6B99EB025F770260E0503B0A7B0163AD</fromReqHeaderId>\r\n" +
" <fromReqLineId>6C2219E0F3FD6F92E0503B0A7B015665</fromReqLineId>\r\n" +
" </cancelPonLine>\r\n" +
" <cancelPonLine>\r\n" +
" <fromReqHeaderId>6B99EB025F770260E0503B0A7B0163AD</fromReqHeaderId>\r\n" +
" <fromReqLineId>6C2219E0F3FD6F92E0503B0A7B015665</fromReqLineId>\r\n" +
" </cancelPonLine>\r\n" +
" <cancelPonLine>\r\n" +
" <fromReqHeaderId>6B99EB025F770260E0503B0A7B0163AD</fromReqHeaderId>\r\n" +
" <fromReqLineId>6C2219E0F3FD6F92E0503B0A7B015665</fromReqLineId>\r\n" +
" </cancelPonLine>\r\n" +
"</cancelPonLineData>\r\n" ;
List<Map<String, Object>> transXmlStringToList = transXmlStringToList(ss);
System.out.println(transXmlStringToList);
}
/**
* @description 将xml字符串数据转换成list
* @param xml
* @return Map
*/
public static List<Map<String, Object>> transXmlStringToList(String xml) {
Document doc = null;
List<Map<String, Object>> ckxxList = new ArrayList<Map<String, Object>>();
try {
//注意xml串中可能存在一些非法的字符串,需要转化
doc = DocumentHelper.parseText(xml.replaceAll(" < ", "<")
.replaceAll(" ≤ ", "<=")); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
//获取操作类型
// Element el =(Element)doc.selectSingleNode("//" + rootElt.getName() + "/operateType");
// String operateType=el.getText();
Iterator<?> iter1 = rootElt.elementIterator(); // 获取根节点下的子节点 SyncToPmsBuyerRequestData
// 遍历根节点
while (iter1.hasNext()) {
Element recordEle = (Element) iter1.next();
Iterator<?> iter2 =recordEle.elementIterator();// cux5SysUserData //operateType
String elementName = recordEle.getName();
Map<String, Object> map = new HashMap<String, Object>();
// if(elementName.equals("operateType")) {
// map.put(elementName, recordEle.getTextTrim());
// }
List<Map<String, Object>> ckdataList = new ArrayList<Map<String, Object>>();
while(iter2.hasNext()){
Element recordEle2 = (Element) iter2.next();
if(!"cancelPonLine".equalsIgnoreCase(recordEle2.getName())){
map.put(recordEle2.getName(), recordEle2.getTextTrim());
}
if("cancelPonLine".equalsIgnoreCase(recordEle2.getName())){
Map<String, Object> ckdataMap = new HashMap<String, Object>();
Iterator<?> iter3 =recordEle2.elementIterator();
while(iter3.hasNext()){
Element recordEle3 = (Element)iter3.next();
ckdataMap.put(recordEle3.getName(), recordEle3.getTextTrim());
}
ckdataList.add(ckdataMap);
// map.put("operateType", operateType);
map.put(recordEle2.getName(), ckdataList);
}
}
if(!map.isEmpty()) {//防止插入空map
ckxxList.add(map);
}
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return ckxxList;
}