微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xml转换Map

将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 举报,一经查实,本站将立刻删除。