在很多时候,特别是开发接口的时候,我们总是要将一些数据封装到xml格式中作为接口的传参,如果手动封装一个String类型的xml格式的报文是件非常麻烦的事,如果我们用map传参就很简单了,所以,这个时候就要一个将map转换成xml的封装方法
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Map_toXml{
public static String GetXMLFromMap(Map map,int iMode) {
StringBuffer sb = new StringBuffer();
if(map == null || map.size() == 0){
return "";
}
if (0 == iMode) {
sb.append("<?xml version=\"1.0\" encoding=\"GBK\"?>\n");
sb.append("<root>\n");
}
// 为了方便观看结果,将有内嵌的排在后面
Iterator iterr = map.keySet().iterator();
while(iterr.hasNext()){
String keyString = (String) iterr.next();
if(!(map.get(keyString) instanceof Map)){
sb.append("<" + keyString + ">");
sb.append(map.get(keyString));
sb.append("</" + keyString + ">\n");
}
}
iterr = map.keySet().iterator();
while (iterr.hasNext()) {
String key = (String) iterr.next();
if (map.get(key) instanceof Map) {
if (key.indexOf("|!|") > 0) {
sb.append("<" + key.substring(0, key.indexOf("|!|")) + ">\n");
sb.append(GetXMLFromMap((Map) map.get(key), iMode + 1));
sb.append("</" + key.substring(0, key.indexOf("|!|")) + ">\n");
} else {
sb.append("<" + key + ">\n");
sb.append(GetXMLFromMap((Map) map.get(key), iMode + 1));
sb.append("</" + key + ">\n");
}
}
}
if (0 == iMode)
sb.append("</root>\n");
return sb.toString();
}
测试代码:
public static void main(String args[]){
Map map = new HashMap<String, Object>();
Map mapp = new HashMap();
mapp.put("test", "Demo");
map.put("name", "张三");
map.put("age", 23);
map.put("address", "广州天河区");
map.put("mm", mapp);
String result = GetXMLFromMap(map,0);
System.out.println(result);
}