java解析xml字符串(用dom4j)

  1. package com.smsServer.Dhst;

  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;

  5. import org.dom4j.Document;
  6. import org.dom4j.DocumentException;
  7. import org.dom4j.DocumentHelper;
  8. import org.dom4j.Element;

  9. import com.common.object.SmsSendResponseObject;

  10. /**
  11.  * @description 解析xml字符串
  12.  */
  13. public class Test {

  14.     public void readStringXml(String xml) {
  15.         Document doc = null;
  16.         try {

  17.             // 讀取並解析XML文檔

  18.             // SAXReader就是一個管道,用一個流的方式,把xml文件讀出來

  19.             // SAXReader reader = new SAXReader(); //User.hbm.xml表示你要解析的xml文檔

  20.             // Document document = reader.read(new File("User.hbm.xml"));

  21.             // 下面的是通過解析xml字符串的

  22.             doc = DocumentHelper.parseText(xml); // 將字符串轉爲XML


  23.             Element rootElt = doc.getRootElement(); // 獲取根節點

  24.             System.out.println("根節點:" + rootElt.getName()); // 拿到根節點的名稱


  25.             Iterator iter = rootElt.elementIterator("head"); // 獲取根節點下的子節點head


  26.             // 遍歷head節點

  27.             while (iter.hasNext()) {

  28.                 Element recordEle = (Element) iter.next();
  29.                 String title = recordEle.elementTextTrim("title"); // 拿到head節點下的子節點title值

  30.                 System.out.println("title:" + title);

  31.                 Iterator iters = recordEle.elementIterator("script"); // 獲取子節點head下的子節點script


  32.                 // 遍歷Header節點下的Response節點

  33.                 while (iters.hasNext()) {

  34.                     Element itemEle = (Element) iters.next();

  35.                     String username = itemEle.elementTextTrim("username"); // 拿到head下的子節點script下的字節點username的值

  36.                     String password = itemEle.elementTextTrim("password");

  37.                     System.out.println("username:" + username);
  38.                     System.out.println("password:" + password);
  39.                 }
  40.             }
  41.             Iterator iterss = rootElt.elementIterator("body"); ///獲取根節點下的子節點body

  42.             // 遍歷body節點

  43.             while (iterss.hasNext()) {

  44.                 Element recordEless = (Element) iterss.next();
  45.                 String result = recordEless.elementTextTrim("result"); // 拿到body節點下的子節點result值

  46.                 System.out.println("result:" + result);

  47.                 Iterator itersElIterator = recordEless.elementIterator("form"); // 獲取子節點body下的子節點form

  48.                 // 遍歷Header節點下的Response節點

  49.                 while (itersElIterator.hasNext()) {

  50.                     Element itemEle = (Element) itersElIterator.next();

  51.                     String banlce = itemEle.elementTextTrim("banlce"); // 拿到body下的子節點form下的字節點banlce的值

  52.                     String subID = itemEle.elementTextTrim("subID");

  53.                     System.out.println("banlce:" + banlce);
  54.                     System.out.println("subID:" + subID);
  55.                 }
  56.             }
  57.         } catch (DocumentException e) {
  58.             e.printStackTrace();

  59.         } catch (Exception e) {
  60.             e.printStackTrace();

  61.         }
  62.     }

  63.     /**
  64.      * @description 將xml字符串轉換成map
  65.      * @param xml
  66.      * @return Map
  67.      */
  68.     public static Map readStringXmlOut(String xml) {
  69.         Map map = new HashMap();
  70.         Document doc = null;
  71.         try {
  72.             doc = DocumentHelper.parseText(xml); // 將字符串轉爲XML

  73.             Element rootElt = doc.getRootElement(); // 獲取根節點

  74.             System.out.println("根節點:" + rootElt.getName()); // 拿到根節點的名稱


  75.             Iterator iter = rootElt.elementIterator("head"); // 獲取根節點下的子節點head

  76.             // 遍歷head節點

  77.             while (iter.hasNext()) {

  78.                 Element recordEle = (Element) iter.next();
  79.                 String title = recordEle.elementTextTrim("title"); // 拿到head節點下的子節點title值

  80.                 System.out.println("title:" + title);
  81.                 map.put("title", title);

  82.                 Iterator iters = recordEle.elementIterator("script"); // 獲取子節點head下的子節點script


  83.                 // 遍歷Header節點下的Response節點

  84.                 while (iters.hasNext()) {

  85.                     Element itemEle = (Element) iters.next();

  86.                     String username = itemEle.elementTextTrim("username"); // 拿到head下的子節點script下的字節點username的值

  87.                     String password = itemEle.elementTextTrim("password");

  88.                     System.out.println("username:" + username);
  89.                     System.out.println("password:" + password);
  90.                     map.put("username", username);
  91.                     map.put("password", password);

  92.                 }
  93.             }

  94.             Iterator iterss = rootElt.elementIterator("body"); ///獲取根節點下的子節點body

  95.             // 遍歷body節點

  96.             while (iterss.hasNext()) {
  97.                 Element recordEless = (Element) iterss.next();
  98.                 String result = recordEless.elementTextTrim("result"); // 拿到body節點下的子節點result值

  99.                 System.out.println("result:" + result);

  100.                 Iterator itersElIterator = recordEless.elementIterator("form"); // 獲取子節點body下的子節點form

  101.                 // 遍歷Header節點下的Response節點

  102.                 while (itersElIterator.hasNext()) {

  103.                     Element itemEle = (Element) itersElIterator.next();

  104.                     String banlce = itemEle.elementTextTrim("banlce"); // 拿到body下的子節點form下的字節點banlce的值

  105.                     String subID = itemEle.elementTextTrim("subID");

  106.                     System.out.println("banlce:" + banlce);
  107.                     System.out.println("subID:" + subID);
  108.                     map.put("result", result);
  109.                     map.put("banlce", banlce);
  110.                     map.put("subID", subID);
  111.                 }
  112.             }
  113.         } catch (DocumentException e) {
  114.             e.printStackTrace();
  115.         } catch (Exception e) {
  116.             e.printStackTrace();
  117.         }
  118.         return map;
  119.     }
  120.     public static void parse(String xml)
  121.     {
  122.         Document doc = null;
  123.         try {
  124.             doc = DocumentHelper.parseText(xml); // 將字符串轉爲XML

  125.             Element rootElt = doc.getRootElement(); // 獲取根節點smsReport

  126.             Iterator iters = rootElt.elementIterator("sendResp"); // 獲取根節點下的子節點sms

  127.             while (iters.hasNext()) {
  128.                 Element recordEle1 = (Element) iters.next();
  129.                 Iterator iter = recordEle1.elementIterator("sms");
  130.                 int i=0;
  131.                 // 遍歷sms節點

  132.                 while (iter.hasNext()) {
  133.                     Element recordEle = (Element) iter.next();
  134.                     SmsSendResponseObject r = new SmsSendResponseObject();
  135.                     String phone = recordEle.elementTextTrim("phone"); // 拿到sms節點下的子節點stat值

  136.                     String smsID = recordEle.elementTextTrim("smsID"); // 拿到sms節點下的子節點stat值

  137.                     System.out.println(phone+"==="+smsID);
  138.                 }
  139.             }
  140.         } catch (DocumentException e) {
  141.             e.printStackTrace();
  142.         } catch (Exception e) {
  143.             e.printStackTrace();
  144.         }
  145.     }
  146.     public static void main(String[] args) {

  147.         // 下面是需要解析的xml字符串例子

  148.         String xmlString = "" + "" + ""
  149.                 + "" + ""
  150.                 + "" + "0" + " "
  151.                 + "1000" + "36242519880716"
  152.                 + "" + " " + "";

  153.         /*
  154.          * Test2 test = new Test2(); test.readStringXml(xmlString);
  155.          */
  156.         Map map = readStringXmlOut(xmlString);
  157.         Iterator iters = map.keySet().iterator();
  158.         while (iters.hasNext()) {
  159.             String key = iters.next().toString(); // 拿到鍵

  160.             String val = map.get(key).toString(); // 拿到值

  161.             System.out.println(key + "=" + val);
  162.         }
  163.         String xml="137000000ff8080813349da9001334f0eed8c5923187000000ff8080813349da9001334f0eee045924";
  164.         parse(xml);
  165.     }

  166. }
  167. ---------------------------------------------
  168. 運行之後的結果會是:

    根節點:html
    title:dom4j解析一個例子
    username:yangrong
    password:123456
    result:0
    banlce:1000
    subID:36242519880716
    result=0
    username=yangrong
    title=dom4j解析一個例子
    subID=36242519880716
    banlce=1000
    password=123456
    137000000===ff8080813349da9001334f0eed8c5923
    187000000===ff8080813349da9001334f0eee045924


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章