//map to xml
public static String converter(Map dataMap, String rootName)
{
synchronized (MapToXMLString.class) //同步锁,确保每次只有一个线程调用。
{
StringBuilder strBuilder = new StringBuilder();
strBuilder.append("<"+rootName+">");
strBuilder.append("\n");
Set objSet = dataMap.keySet();
for (Object key : objSet)
{
if (key == null)
{
continue;
}
strBuilder.append("<").append(key.toString()).append(">");
Object value = dataMap.get(key);
strBuilder.append(coverter(value));
strBuilder.append("").append(key.toString()).append(">");
strBuilder.append("\n");
}
strBuilder.append(""+rootName+">");
return strBuilder.toString();
}
}
import org.dom4j.Document;
//xml to map
public static Map parse(String text){
SAXReader saxReader = new SAXReader();
try {
saxReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
Document document = saxReader.read(new ByteArrayInputStream(text.getBytes()));
Map map = Dom2Map(document);
return map;
} catch (DocumentException e) {
// e.printStackTrace();
} catch (SAXException e) {
}
return null;
}
/**
* 将Document对象转为Map(String→Document→Map)
* @param doc
* @return
*/
@SuppressWarnings("rawtypes")
public static Map Dom2Map(Document doc){
Map map = new HashMap();
if(doc == null)
return map;
Element root = doc.getRootElement();
for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {
Element e = (Element) iterator.next();
//System.out.println(e.getName());
List list = e.elements();
if(list.size() > 0){
map.put(e.getName(), Dom2Map(e));
}else
map.put(e.getName(), e.getText());
}
return map;
}
/**
* 将Element对象转为Map(String→Document→Element→Map)
* @param e
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Map Dom2Map(Element e){
Map map = new HashMap();
List list = e.elements();
if(list.size() > 0){
for (int i = 0;i < list.size(); i++) {
Element iter = (Element) list.get(i);
List mapList = new ArrayList();
if(iter.elements().size() > 0){
Map m = Dom2Map(iter);
if(map.get(iter.getName()) != null){
Object obj = map.get(iter.getName());
if(!(obj instanceof java.util.ArrayList)){
mapList = new ArrayList();
mapList.add(obj);
mapList.add(m);
}
if(obj instanceof java.util.ArrayList){
mapList = (List) obj;
mapList.add(m);
}
map.put(iter.getName(), mapList);
}else
map.put(iter.getName(), m);
}
else{
if(map.get(iter.getName()) != null){
Object obj = map.get(iter.getName());
if(!(obj instanceof java.util.ArrayList)){
mapList = new ArrayList();
mapList.add(obj);
mapList.add(iter.getText());
}
if(obj instanceof java.util.ArrayList){
mapList = (List) obj;
mapList.add(iter.getText());
}
map.put(iter.getName(), mapList);
}else
map.put(iter.getName(), iter.getText());//公共map resultCode=0
}
}
}else
map.put(e.getName(), e.getText());
return map;
}