您的位置:首页 > 其它

将xml字符串转换成map,list 的转换

2017-08-14 16:39 211 查看
public static Map transXmlStringToMap(String xml) {
Map map = new HashMap();
Document doc = null;
try {

doc = DocumentHelper.parseText(xml); // 将字符串转为XML

Element rootElt = doc.getRootElement(); // 获取根节点

System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称

Iterator iter = rootElt.elementIterator(); // 获取根节点下的子节点

// 遍历根节点
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
String elementName = recordEle.getName();
String elementValue = recordEle.getTextTrim();

System.out.println(elementName + "=" + elementValue);
map.put(elementName, elementValue);
}

} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}

    /**

* @description 将xml字符串数据转换成list
* @param xml
* @return Map
*/
public static List transXmlStringToList(String xml) {
Document doc = null;
List ckxxList = new ArrayList();
try {
//注意xml串中可能存在一些非法的字符串,需要转化
doc = DocumentHelper.parseText(xml.replaceAll(" < ", "<")
.replaceAll(" ≤ ", "<=")); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
Iterator iter1 = rootElt.elementIterator(); // 获取根节点下的子节点
// 遍历根节点
while (iter1.hasNext()) {
Element recordEle = (Element) iter1.next();
Iterator iter2 =recordEle.elementIterator();
String elementName = recordEle.getName();
Map map = new HashMap();
List ckdataList = new ArrayList();
while(iter2.hasNext()){
Element recordEle2 = (Element) iter2.next();
if(!"CKDATA".equalsIgnoreCase(recordEle2.getName())){
map.put(recordEle2.getName(), recordEle2.getTextTrim());
}
if("CKDATA".equalsIgnoreCase(recordEle2.getName())){
Map ckdataMap = new HashMap();
Iterator iter3 =recordEle2.elementIterator();
while(iter3.hasNext()){
Element recordEle3 = (Element)iter3.next();
ckdataMap.put(recordEle3.getName(), recordEle3.getTextTrim());
}
ckdataList.add(ckdataMap);

map.put(recordEle2.getName(), ckdataList);
}
}
ckxxList.add(map);

}

} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return ckxxList;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: