package com.litz;
//先加入dom4j.jar包
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
/**
*
*/
public class TestDom4j {
public static void readXML(String xml)
{
Document doc = null;
try {
doc = DocumentHelper.parseText(xml);
Element rootElt = doc.getRootElement(); // 获取根节点
print("根节点" , rootElt.getName());
print("origdomain",rootElt.elementTextTrim("origdomain"));
print("homedomain",rootElt.elementTextTrim("homedomain"));
print("bipcode",rootElt.elementTextTrim("bipcode"));
print("activitycode",rootElt.elementTextTrim("activitycode"));
print("actioncode",rootElt.elementTextTrim("actioncode"));
Iterator iter = rootElt.elementIterator("routing");
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
print("routetype",recordEle.elementText("routetype"));
print("routevalue",recordEle.elementText("routevalue"));
}
print("procid",rootElt.elementText("procid"));
print("transido",rootElt.elementText("transido"));
print("processtime",rootElt.elementText("processtime"));
Iterator iter2 = rootElt.elementIterator("spreserve");
while (iter2.hasNext()) {
Element recordEle = (Element) iter2.next();
print("transidc",recordEle.elementText("transidc"));
print("cutoffday",recordEle.elementText("cutoffday"));
print("osnduns",recordEle.elementText("osnduns"));
print("hsnduns",recordEle.elementText("hsnduns"));
print("convid",recordEle.elementText("convid"));
print("cutoffday",recordEle.elementText("cutoffday"));
}
print("testflag",rootElt.elementText("testflag"));
print("msgsender",rootElt.elementText("msgsender"));
print("msgreceiver",rootElt.elementText("msgreceiver"));
print("svccontver",rootElt.elementText("svccontver"));
Iterator iter3 = rootElt.elementIterator("svccont");
while (iter3.hasNext()) {
Element recordEle3 = (Element) iter3.next();
Iterator iter_bizinfo = recordEle3.elementIterator("bizinfo");
while (iter_bizinfo.hasNext()) {
Element recordEle_bizinfo = (Element) iter_bizinfo.next();
Iterator iter_userinfo = recordEle_bizinfo.elementIterator("userinfo");
while (iter_userinfo.hasNext()) {
Element recordEle_userinfo = (Element) iter_userinfo.next();
print("ecid",recordEle_userinfo.elementText("ecid"));
print("ordid",recordEle_userinfo.elementText("ordid"));
print("prodname",recordEle_userinfo.elementText("prodname"));
print("oprseq",recordEle_userinfo.elementText("oprseq"));
Iterator iter_userdata = recordEle_userinfo.elementIterator("userdata");
while (iter_userdata.hasNext()) {
Element recordEle_userdata = (Element) iter_userdata.next();
print("msisdn",recordEle_userdata.elementText("msisdn"));
print("oprcode",recordEle_userdata.elementText("oprcode"));
print("payecid",recordEle_userdata.elementText("payecid"));
print("efftt",recordEle_userdata.elementText("efftt"));
print("oprt",recordEle_userdata.elementText("oprt"));
print("loctype",recordEle_userdata.elementText("loctype"));
print("uetype",recordEle_userdata.elementText("uetype"));
print("ueid",recordEle_userdata.elementText("ueid"));
print("uemodel",recordEle_userdata.elementText("uemodel"));
print("autonum",recordEle_userdata.elementText("autonum"));
}
}
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* @description 将xml字符串转换成map
* @param xml
* @return Map
*/
public static Map readStringXmlOut(String xml) {
Map map = new HashMap();
Document doc = null;
try {
// 将字符串转为XML
doc = DocumentHelper.parseText(xml);
// 获取根节点
Element rootElt = doc.getRootElement();
// 拿到根节点的名称
System.out.println("根节点:" + rootElt.getName());
// 获取根节点下的子节点head
Iterator iter = rootElt.elementIterator("head");
// 遍历head节点
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
// 拿到head节点下的子节点title值
String title = recordEle.elementTextTrim("title");
System.out.println("title:" + title);
map.put("title", title);
// 获取子节点head下的子节点script
Iterator iters = recordEle.elementIterator("script");
// 遍历Header节点下的Response节点
while (iters.hasNext()) {
Element itemEle = (Element) iters.next();
// 拿到head下的子节点script下的字节点username的值
String username = itemEle.elementTextTrim("username");
String password = itemEle.elementTextTrim("password");
System.out.println("username:" + username);
System.out.println("password:" + password);
map.put("username", username);
map.put("password", password);
}
}
//获取根节点下的子节点body
Iterator iterss = rootElt.elementIterator("body");
// 遍历body节点
while (iterss.hasNext()) {
Element recordEless = (Element) iterss.next();
// 拿到body节点下的子节点result值
String result = recordEless.elementTextTrim("result");
System.out.println("result:" + result);
// 获取子节点body下的子节点form
Iterator itersElIterator = recordEless.elementIterator("form");
// 遍历Header节点下的Response节点
while (itersElIterator.hasNext()) {
Element itemEle = (Element) itersElIterator.next();
// 拿到body下的子节点form下的字节点banlce的值
String banlce = itemEle.elementTextTrim("banlce");
String subID = itemEle.elementTextTrim("subID");
System.out.println("banlce:" + banlce);
System.out.println("subID:" + subID);
map.put("result", result);
map.put("banlce", banlce);
map.put("subID", subID);
}
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
public static void main(String[] args) {
String xmlStr =
"<interboss>" +
"<origdomain>BBSS</origdomain><homedomain>LBMP</homedomain>" +
"<bipcode>BIP4B768</bipcode><bipver>0100</bipver>" +
"<activitycode>T4101043</activitycode><actioncode>0</actioncode>" +
"<routing>" +
"<routetype>00</routetype><routevalue>000</routevalue>" +
"</routing>" +
"<procid>703835</procid><transido>SUF2014100108480333002558</transido>" +
"<processtime>20141001084803</processtime>" +
"<spreserve>" +
"<transidc>0000BBSSSUF2014100108480333002558</transidc><cutoffday>20141001</cutoffday>" +
"<osnduns>0000</osnduns> <hsnduns>0000</hsnduns> <convid>001900005557SUF201410010848033300255820141001084902135</convid>" +
"</spreserve>" +
"<testflag>0</testflag> <msgsender>0000</msgsender> <msgreceiver>0050</msgreceiver> <svccontver>0100</svccontver>" +
"<svccont>" +
"<bizinfo> " +
"<userinfo> <ecid>270480981270270000</ecid> <ordid>9002761775</ordid> <prodname> س ͨ Ա</prodname>" +
"<oprseq>20141001084803116</oprseq>" +
"<userdata><msisdn>13476479274</msisdn> <oprcode>03</oprcode> <payecid>270480981270270000</payecid> <efftt>20141001</efftt>" +
"<oprt>20141001084803</oprt> <loctype>A</loctype> <uetype>2</uetype> <ueid>NULL</ueid> <uemodel>NULL</uemodel>" +
"<autonum>NULL</autonum>" +
"</userdata>" +
"</userinfo>" +
"</bizinfo>" +
"</svccont>" +
"</interboss>";
// 下面是需要解析的xml字符串例子
String xmlString = "<html>" + "<order>123456</order>"
+ "<head>" + "<title>dom4j解析一个例子</title>"
+ "<script>" + "<username>yangrong</username>"
+ "<password>123456</password>" + "</script>" + "</head>"
+ "<body>" + "<result>0</result>" + "<form>"
+ "<banlce>1000</banlce>" + "<subID>36242519880716</subID>"
+ "</form>" + "</body>" + "</html>";
readXML(xmlStr);
/*
* Test2 test = new Test2(); test.readStringXml(xmlString);
*/
// Map map = readStringXmlOut(xmlStr);
// Iterator iters = map.keySet().iterator();
// while (iters.hasNext()) {
// String key = iters.next().toString(); // 拿到键
// String val = map.get(key).toString(); // 拿到值
// System.out.println(key + "=" + val);
// }
}
public static void print(String str1,String str2)
{
System.out.println(str1 +":"+str2);
}
}