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. }

运行之后的结果会是:

根节点: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

 转自http://blog.chinaunix.net/uid-25728370-id-2983116.html

java解析xml字符串(用dom4j)的更多相关文章

  1. java解析xml字符串为实体(dom4j解析)

    package com.smsServer.Dhst; import java.util.HashMap; import java.util.Iterator; import java.util.Ma ...

  2. java解析xml字符串方法

    一,用DOM4J  针对无重复标签的xml字符串格式,如下: 针对此种情况可用DOM4J解析法,引入 dom4j的相关jar包代码如下: Document document=DocumentHelpe ...

  3. 最简单的JAVA解析XML字符串方法

    引入 dom4j 包<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifa ...

  4. Java解析XML字符串,取出其中<aaaa><![CDATA[(XXX)]]></aaa>里面的XXX值,也可以使用xml解析的其他方式,这是最简单的字符串解析

    直接贴一段业务代码,这段代码是解析请求返回的xml格式字符串,为了取出其中的值便于下一步的使用. @RequestMapping(value="/search",produces ...

  5. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  6. dom4j解析xml字符串实例

    DOM4J 与利用DOM.SAX.JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml ...

  7. 使用Java解析XML文件或XML字符串的例子

    转: 使用Java解析XML文件或XML字符串的例子 2017年09月16日 11:36:18 inter_peng 阅读数:4561 标签: JavaXML-Parserdom4j 更多 个人分类: ...

  8. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    [目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...

  9. Java解析XML之Dom4j

    Java解析XML文件的方法有多种,个人感觉最常用的是使用Dom4j来解析XML文件.下面就简单介绍下Dom4j的基础使用. Dom4j需要jar包的支持,大家可以从网络上下载,如dom4j-1.6. ...

随机推荐

  1. tsung的配置使用

    1.在root下新建.tsung文件,在.tsung文件新建log文件夹..tsung文件用于存放log和xml文件 2.复制/usr/local/tsung/share/doc/tsung/exam ...

  2. .NET资料之-根据两点经纬度计算直线距离

    最近做东西碰到要根据两点经纬度计算之间的直线距离,就网上找了查了下资料.因为这类接触的比较少,就直接找现成的代码了,没怎么研究.代码如下,作为记录. private const double EART ...

  3. C语言实现http get请求程序

    1.客户端程序: 向指定URL发送http请求, http://files.cnblogs.com/files/yyx1-1/httpclient01.7z 源码程序 2.服务器程序: 接收URL请求 ...

  4. 机器学习基石第三讲:types of learning

    博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完毕机器学习基石的第三讲.这一讲主要介绍了机器学习的分类.对何种问题应该使用何种 ...

  5. AndroidStudio项目提交(更新)到github最具体步骤

    在使用studio开发的项目过程中有时候我们想将项目公布到github上.曾经都是用一种比較麻烦的方式(cmd)进行提交.近期发现studio事实上是自带这样的功能的,最终能够摆脱命令行了. 由于自己 ...

  6. Mockito 相关资料

    https://monkeyisland.pl/2008/04/26/asking-and-telling/ http://qiuguo0205.iteye.com/blog/1456528 http ...

  7. Tomcat 文件夹结构

    文件夹                                                          描写叙述 /bin                               ...

  8. atitit.判断时间重叠方法总结 java c++ c#.net js php

    atitit.判断时间重叠方法总结 java c++ c#.net  js php 1. 判断时间重叠具体流程思路 1 2. 重叠算法 实际上就是日期集合跟个时间集合的的交集(乘法算法) 1 3. 代 ...

  9. android.view.animation(3) - LayoutAnimationController 和 GridLayoutAnimationController

    前几篇给大家讲述了如何针对某一个控件应用动画,这篇将给大家讲解如何给容器中的控件应用统一动画.即在容器中控件出现时,不必为每个控件添加进入动画,可以在容器中为其添加统一的进入和退出动画. 从上面的示例 ...

  10. Flume线上日志采集【模板】

    Flume线上日志采集[模板] 预装软件 Java HDFS Lzo/Lzop 系统版本 Flume 1.5.0-cdh5.4.0 系统流程图 flume-env.sh配置文件 export JAVA ...