private Map<String,String> getMapFromXML(String xmlString) {
Map<String, String> resultMap=new HashMap<String, String>();
try {
Document document = DocumentHelper.parseText(xmlString);
Element rootElement = document.getRootElement();
Set<String> reSet=new HashSet<String>();
toMap(rootElement, resultMap, reSet);
for(String name:reSet){
resultMap.remove(name);
}
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
private void toMap(Element fromElement,Map<String, String> resultMap,Set<String> reSet){
List<Element> elementList = fromElement.elements();
if(elementList.size()==0){
String name = fromElement.getName();
if(resultMap.containsKey(name)){
reSet.add(name);
}else{
resultMap.put(name, fromElement.getText());
}
}else{
for(Element element:elementList){
toMap(element, resultMap, reSet);
}
}
}
在做接口对接的时,常用到该功能
Map转xml
xml转Map,如果键冲突将忽略(不会保存该键值对)
private Map<String,String> getMapFromXML(String xmlString) {
Map<String, String> resultMap=new HashMap<String, String>();
try {
Document document = DocumentHelper.parseText(xmlString);
Element rootElement = document.getRootElement();
Set<String> reSet=new HashSet<String>();
toMap(rootElement, resultMap, reSet);
for(String name:reSet){
resultMap.remove(name);
}
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
private void toMap(Element fromElement,Map<String, String> resultMap,Set<String> reSet){
List<Element> elementList = fromElement.elements();
if(elementList.size()==0){
String name = fromElement.getName();
if(resultMap.containsKey(name)){
reSet.add(name);
}else{
resultMap.put(name, fromElement.getText());
}
}else{
for(Element element:elementList){
toMap(element, resultMap, reSet);
}
}
}