dom4j解析xml

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值