说明
[1]、使用 dom4j 的 jar包。
[2]、支持多级节点的 map,map下节点对象支持 list 。
[3]、map转 json 类型的字符串 。
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.StringWriter;
import java.util.*;
/**
* map 对象转换成 xml 字符串
**/
public class MapToXmlUtils{
/**
* map 对象转换成 xml 字符串
**/
public static String mapToXml(Map map) throws Exception{
if (null == map) return null;
System.out.println("转换前的Map对象数据:" + map.toString());
StringBuffer sb = new StringBuffer();
/** 添加xml 的公共头信息 */
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
mapToXmlHelp(map, sb);
System.out.println("将map转成xml后的数据:" + sb.toString());
return sb.toString();
}
/**
* 转换帮助方法
**/
private static void mapToXmlHelp(Map map, StringBuffer str) throws Exception{
Set set = map.keySet();
/** 遍历key */
for (Iterator it = set.iterator(); it.hasNext();) {
String key = (String) it.next();
Object value = map.get(key);
if (null == value)
value = "";
/** 如果对象是集合 */
if (value.getClass().getName().equals("java.util.ArrayList")) {
ArrayList list = (ArrayList) map.get(key);
str.append("<" + key + ">");
for (int i = 0; i < list.size(); i++) {
HashMap hm = (HashMap) list.get(i);
mapToXmlHelp(hm, str);
}
str.append("</" + key + ">");
/** 如果该集合对象的长度只有1,那么默认重复添加集合下节点 */
if (null !=list && !list.isEmpty() && list.size() <= 1) {
str.append("<" + key + ">");
for (int i = 0; i < list.size(); i++) {
HashMap hm = (HashMap) list.get(i);
mapToXmlHelp(hm, str);
}
str.append("</" + key + ">");
}
/** 对象非集合时 */
} else {
if (value instanceof HashMap) {
str.append("<" + key + ">");
mapToXmlHelp((HashMap) value, str);
str.append("</" + key + ">");
} else {
str.append("<" + key + ">" + value + "</" + key + ">");
}
}
}
}
}