zoukankan      html  css  js  c++  java
  • 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 = "<html>" + "<head>" + "<title>dom4j解析一个例子</title>"
    149.                 + "<script>" + "<username>yangrong</username>"
    150.                 + "<password>123456</password>" + "</script>" + "</head>"
    151.                 + "<body>" + "<result>0</result>" + "<form>"
    152.                 + "<banlce>1000</banlce>" + "<subID>36242519880716</subID>"
    153.                 + "</form>" + "</body>" + "</html>";
    154.         /*
    155.          * Test2 test = new Test2(); test.readStringXml(xmlString);
    156.          */
    157.         Map map = readStringXmlOut(xmlString);
    158.         Iterator iters = map.keySet().iterator();
    159.         while (iters.hasNext()) {
    160.             String key = iters.next().toString(); // 拿到键
    161.             String val = map.get(key).toString(); // 拿到值
    162.             System.out.println(key + "=" + val);
    163.         }
    164.         String xml="<batchSendResp><sendResp><sms><phone>137000000</phone><smsID>ff8080813349da9001334f0eed8c5923</smsID></sms></sendResp><sendResp><sms><phone>187000000</phone><smsID>ff8080813349da9001334f0eee045924</smsID></sms></sendResp></batchSendResp>";
    165.         parse(xml);
    166.     }
    167. }
    戒骄戒躁,一步一个脚印
  • 相关阅读:
    Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)
    mysql 开发进阶篇系列 46 物理备份与恢复( xtrabackup的 选项说明,增加备份用户,完全备份案例)
    mysql 开发进阶篇系列 45 物理备份与恢复(xtrabackup 安装,用户权限,配置)
    mysql 开发进阶篇系列 44 物理备份与恢复( 热备份xtrabackup 工具介绍)
    Linux编程 21 shell编程(环境变量,用户变量,命令替换)
    Linux编程 20 shell编程(shell脚本创建,echo显示信息)
    mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)
    Linux编程 19 编辑器(vim 用法)
    (网页)angularjs中的interval定时执行功能(转)
    (网页)在SQL Server中为什么不建议使用Not In子查询(转)
  • 原文地址:https://www.cnblogs.com/sophelia-M/p/4058958.html
Copyright © 2011-2022 走看看