将xml格式字符串转换成一个map格式,其中key为xml中的节点名称,多层中间用“.”连接,value为节点内容。
1.输入
<?xml version="1.0" encoding="UTF-8"?> <Response> <ResultCode>000000</ResultCode> <ResultDesc>成功</ResultDesc> <nn> <test>111</test> <a> <b>r</b> </a> </nn> </Response>
2.输出
Response.nn.test=111
Response.ResultCode=000000
Response.ResultDesc=成功
Response.nn.a.b=r
3.完整代码
importorg.dom4j.Document; importorg.dom4j.DocumentException; importorg.dom4j.DocumentHelper; importorg.dom4j.Element; importjava.util.HashMap; importjava.util.Iterator; importjava.util.Map; /** * */ public classDom4jUtil { /** *@description将xml字符串转换成map *@paramxml *@returnMap */ public staticMap readStringXmlOut(String xml) { Map map =newHashMap(); Document doc =null; try{ // 将字符串转为XML doc = DocumentHelper.parseText(xml); // 获取根节点 Element rootElt = doc.getRootElement(); // 拿到根节点的名称 map.putAll(readStringXmlOut(rootElt)); }catch(DocumentException e) { e.printstacktrace(); }catch(Exception e) { e.printstacktrace(); } returnmap; } /** *@description将xml字符串转换成map *@paramrootElt *@returnMap */ public staticMap readStringXmlOut(Element rootElt) { Map map =newHashMap(); try{ // 拿到节点的名称 if(rootElt.isTextOnly()){ map.put(rootElt.getName(),rootElt.getStringValue()); }else{ // 获取根节点下的子节点 Iterator iter = rootElt.elementIterator(); while(iter.hasNext()) { Element recordEle = (Element) iter.next(); recordEle.setName(recordEle.getParent().getName() +"."+ recordEle.getName()); map.putAll(readStringXmlOut(recordEle)); } } }catch(Exception e) { e.printstacktrace(); } returnmap; } public static voidmain(String[] args) { // 下面是需要解析的xml字符串例子 String xmlString ="<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response>\n"+ " <ResultCode>000000</ResultCode>\n"+ " <ResultDesc>成功</ResultDesc>\n"+ " <nn><test>111</test><a><b>r</b></a></nn>\n"+ "</Response>"; Map map =readStringXmlOut(xmlString); Iterator iters = map.keySet().iterator(); while(iters.hasNext()) { String key = iters.next().toString();// 拿到键 String val = map.get(key).toString();// 拿到值 System.out.println(key + "="+ val); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。