XML报文转Map
发布时间:2020-12-16 06:00:37 所属栏目:百科 来源:网络整理
导读:XML报文转Map import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.jdom.Document;import org.jdom.El
XML报文转Map
import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; public class StringXmlToMap { /** * @param args * @throws JDOMException * @throws IOException */ public static void main(String[] args) throws IOException,JDOMException { //待转化的String类型的xml报文 String strxml="<xml>" + "<return_code>" + "<![CDATA[FAIL]]>" + "</return_code>" + "<return_msg>" + " <![CDATA[appid不存在]]>" + "</return_msg>" + "</xml>"; StringXmlToMap str=new StringXmlToMap(); Map map=str.strXmlToMap(strxml); System.out.println(map.get("return_code")); } /** * 将传入的 String 类型的XML报文转化为Map类型的对象 * @param strxml * @return * @throws IOException * @throws JDOMException */ public Map strXmlToMap(String strxml) throws IOException,JDOMException{ if(null == strxml || "".equals(strxml)) { return null; } Map m = new HashMap(); InputStream in = new ByteArrayInputStream(strxml.getBytes("UTF-8")); SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(in); Element root = doc.getRootElement(); List list = root.getChildren(); Iterator it = list.iterator(); while(it.hasNext()) { Element e = (Element) it.next(); String k = e.getName(); String v = ""; List children = e.getChildren(); if(children.isEmpty()) { v = e.getTextNormalize(); } else { v = getChildrenText(children); } m.put(k,v); } //关闭流 in.close(); return m; } /** * 获取子节点的Xml * @param children * @return */ public static String getChildrenText(List children) { StringBuffer sb = new StringBuffer(); if(!children.isEmpty()) { Iterator it = children.iterator(); while(it.hasNext()) { Element e = (Element) it.next(); String name = e.getName(); String value = e.getTextNormalize(); List list = e.getChildren(); sb.append("<" + name + ">"); if(!list.isEmpty()) { sb.append(getChildrenText(list)); } sb.append(value); sb.append("</" + name + ">"); } } return sb.toString(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |