xml与map之间互转(java)

来源:互联网 发布:微信朋友圈数据采集 编辑:程序博客网 时间:2024/05/16 04:00
@SuppressWarnings("unchecked")public static String toXml(Object o) {StringBuffer xml = new StringBuffer("");if (o != null) {if (Map.class.isInstance(o) == true) {Map<String, ?> m = (Map<String, ?>) o;Iterator<String> it = m.keySet().iterator();while (it.hasNext()) {String key = it.next();xml.append("<" + key + ">");if (Map.class.isInstance(m.get(key)) == true|| List.class.isInstance(m.get(key)) == true) {xml.append(toXml(m.get(key)));} else {xml.append(m.get(key));}xml.append("</" + key + ">");}} else if (List.class.isInstance(o) == true) {List<?> l = (List<?>) o;for (int i = 0; i < l.size(); i++) {xml.append(toXml(l.get(i)));}}}return xml.toString();}@SuppressWarnings({ "rawtypes", "unchecked" })public static Map<String, HashMap<?, ?>> toMap(String xml) {Map<String, HashMap<?, ?>> m = new HashMap<String, HashMap<?, ?>>();try {Document document = DocumentHelper.parseText(xml);Element nodeElement = document.getRootElement();if (nodeElement != null) {m.put(nodeElement.getName(), null);List<?> node = nodeElement.elements();if (node != null) {m.put(nodeElement.getName(), new HashMap());for (Iterator<?> it = node.iterator(); it.hasNext();) {Element elm = (Element) it.next();((Map) m.get(nodeElement.getName())).put(elm.getName(),elm.getText());}}}} catch (Exception e) {e.printStackTrace();}return m;}public static String maptoXml(Map<String, String> map) {Document document = DocumentHelper.createDocument();document.setXMLEncoding("UTF-8");Element nodeElement = document.addElement("xml");for (Map.Entry<String, String> str : map.entrySet()) {if (isNotEmpty(str.getValue())) {Element keyElement = nodeElement.addElement(str.getKey());keyElement.addCDATA(str.getValue());}}return document.asXML();}private static boolean isNotEmpty(String str) {if (null == str || "".equals(str.trim()) || "null".equals(str.trim())) {return false;} else {return true;}}

原创粉丝点击