首先需要导入dom4j.jar包,dom4j.jar包的官方下载地址:https://dom4j.github.io/。
进入下载页面选择自己想要的版本下载,然后导入即可。
下面直接看代码:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* @description 将xml字符串转换成map
* @param xml
* @return Map
* @author chenfan
* @date 2021-05-13 11:13:08
*/
public static Map readStringXmlToMap(String xml) {
Map map = new HashMap();
Document doc = null;
try {
// 将字符串转为XML
doc = DocumentHelper.parseText(xml);
// 获取根节点
Element rootElt = doc.getRootElement();
// 拿到根节点的名称
System.out.println("根节点:" + rootElt.getName());
//拿到根节点的IsSucessfull
String IsSucessfull = rootElt.elementTextTrim("IsSucessfull");
System.out.println("IsSucessfull"+IsSucessfull);
map.put("IsSucessfull",IsSucessfull);
//拿到根节点的Message
String Message = rootElt.elementTextTrim("Message");
System.out.println("Message"+Message);
map.put("Message",Message);
// 获取根节点下的子节点DataX
Iterator iter = rootElt.elementIterator("DataX");
// 遍历DataX节点
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
// 拿到head节点下的子节点TRADE_MONEY
String TRADE_MONEY = recordEle.elementTextTrim("TRADE_MONEY");
System.out.println("TRADE_MONEY:" + TRADE_MONEY);
map.put("TRADE_MONEY", TRADE_MONEY);
// 获取子节点head下的子节点BARGAINNO
String BARGAINNO = recordEle.elementTextTrim("BARGAINNO");
System.out.println("BARGAINNO:" + BARGAINNO);
map.put("BARGAINNO", BARGAINNO);
// 获取子节点head下的子节点BANK_ACCOUNT
String BANK_ACCOUNT = recordEle.elementTextTrim("BANK_ACCOUNT");
System.out.println("BANK_ACCOUNT:" + BANK_ACCOUNT);
map.put("BANK_ACCOUNT", BANK_ACCOUNT);
// 获取子节点head下的子节点TRADE_INFO
String TRADE_INFO = recordEle.elementTextTrim("TRADE_INFO");
System.out.println("TRADE_INFO:" + TRADE_INFO);
map.put("TRADE_INFO", TRADE_INFO);
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
测试样例:
public static void main(String[] args) {
String xmlString = "<Result>" +
"<IsSucessfull>0:失败;1:成功</IsSucessfull>" +
"<DataX>" +
"<USER_NAME>张三</USER_NAME>" +
"<USER_ID>441214199010100808</USER_ID>" +
"<BANK_ACCOUNT>6612376329000095192</BANK_ACCOUNT>" +
"<USER_MONEY>1000.00</USER_MONEY>" +
"<ZE>1000.00</ZE>" +
"<YE>2000.00</YE>" +
"</DataX>" +
"<Message>查询成功</Message>" +
"</Result>";
Map map = readStringXmlToMap(xmlString);
System.out.println(map);
System.out.println(map.get("IsSucessfull"));
}
运行结果: