xml与map之间互转(java)

@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;
		}
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值