MAP和XML之间的转换

来源:互联网 发布:2009的淘宝店 编辑:程序博客网 时间:2024/06/09 15:41

引用jar包:dom4j.jar 点击下载


/** * Map转换成Xml * @param map * @return */public static String map2Xmlstring(Map<String,Object> map){StringBuffer sb = new StringBuffer("");sb.append("<xml>");Set<String> set = map.keySet();        for(Iterator<String> it=set.iterator(); it.hasNext();){        String key = it.next();        Object value = map.get(key);        sb.append("<").append(key).append(">");        sb.append(value);        sb.append("</").append(key).append(">");        }sb.append("</xml>");return sb.toString();}


/** * Xml string转换成Map * @param xmlStr * @return */public static Map<String,Object> xmlString2Map(String xmlStr){Map<String,Object> map = new HashMap<String,Object>();Document doc;try {doc = DocumentHelper.parseText(xmlStr);Element el = doc.getRootElement();map = recGetXmlElementValue(el,map);} catch (DocumentException e) {e.printStackTrace();}return map;}

/** * 循环解析xml * @param ele * @param map * @return */@SuppressWarnings({ "unchecked" })private static Map<String, Object> recGetXmlElementValue(Element ele, Map<String, Object> map){List<Element> eleList = ele.elements();if (eleList.size() == 0) {map.put(ele.getName(), ele.getTextTrim());return map;} else {for (Iterator<Element> iter = eleList.iterator(); iter.hasNext();) {Element innerEle = iter.next();recGetXmlElementValue(innerEle, map);}return map;}}

测试:

public static void main(String[] args) {Map<String,Object> map = new HashMap<String,Object>();map.put("id1", "1111111");map.put("id2", "2222222");map.put("id3", "3333333");System.out.println(map2Xmlstring(map));
String xmlStr = "<xml><id2><it1>it1</it1><it2>it2</it2></id2><id1>1111111</id1><id3>3333333</id3></xml>";System.out.println(xmlString2Map(xmlStr));}
结果:

<xml><id2>2222222</id2><id1>1111111</id1><id3>3333333</id3></xml>{id1=1111111, it1=it1, it2=it2, id3=3333333}



0 0