首先要导入dom4j的jar包
代码:
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class dom4jDemo {
public static void main(String[] args) {
String xml =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://www.seecom.com.cn/webservice\">" +
" <soapenv:Header/>" + " <soapenv:Body>" +
" <web:getChargeRequest>" + " <web:charge>" +
" <web:channel>205</web:channel>" +
" <web:pwd>fea1920da4045adeafda10bcd47f3c9f</web:pwd>" +
" <web:orderNo>446666</web:orderNo>" +
" <web:phone>13280009999</web:phone>" +
" <web:money>12</web:money>" + " </web:charge>" +
" </web:getChargeRequest>" + " </soapenv:Body>" +
"</soapenv:Envelope>";
Map<String, String> map = readXmlToMap(xml);
for (String key : map.keySet()) {
System.out.println(key + "=" + map.get(key));
}
}
/**
* @功能描述: 解析提交结果
*
* @param xml
* @return
*
* @作者:zhangpj @创建时间:2018年4月14日
*/
public static Map<String, String> readXmlToMap(String xml) {
Document doc = null;
Map<String, String> resultMap = new HashMap<String, String>();
try {
doc = DocumentHelper.parseText(xml); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
Element bodyElement = rootElt.element("Body");
Element getChargeResponseElement = bodyElement.element(
"getChargeRequest");
Element chargeElement = getChargeResponseElement.element("charge");
try {
// 方式一,直接获取
// String channel=chargeElement.elementTextTrim("channel");
// String pwd=chargeElement.elementTextTrim("pwd");
// String orderNo=chargeElement.elementTextTrim("orderNo");
// String phone=chargeElement.elementTextTrim("phone");
// String money=chargeElement.elementTextTrim("money");
//
// resultMap.put("channel", channel);
// resultMap.put("pwd", pwd);
// resultMap.put("orderNo", orderNo);
// resultMap.put("phone", phone);
// resultMap.put("money", money);
// 方式二,迭代器获取
Iterator<Element> it = chargeElement.elementIterator();
// 遍历
while (it.hasNext()) {
// 获取某个子节点对象
Element e = it.next();
// 对子节点进行遍历
resultMap.put(e.getName(), e.getStringValue().trim());
}
} catch (Exception e) {
e.printStackTrace();
//发生异常以后设置为处理中
resultMap.put("status", "underway");
}
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
}