将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
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);
}
}
}