java解析xml字符串(用dom4j)
- package com.smsServer.Dhst;
- 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;
- import com.common.object.SmsSendResponseObject;
- /**
- * @description 解析xml字符串
- */
- public class Test {
- public void readStringXml(String xml) {
- Document doc = null;
- try {
- // 读取并解析XML文档
- // SAXReader就是一个管道,用一个流的方式,把xml文件读出来
- // SAXReader reader = new SAXReader(); //User.hbm.xml表示你要解析的xml文档
- // Document document = reader.read(new File("User.hbm.xml"));
- // 下面的是通过解析xml字符串的
- doc = DocumentHelper.parseText(xml); // 将字符串转为XML
- Element rootElt = doc.getRootElement(); // 获取根节点
- System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
- Iterator iter = rootElt.elementIterator("head"); // 获取根节点下的子节点head
- // 遍历head节点
- while (iter.hasNext()) {
- Element recordEle = (Element) iter.next();
- String title = recordEle.elementTextTrim("title"); // 拿到head节点下的子节点title值
- System.out.println("title:" + title);
- Iterator iters = recordEle.elementIterator("script"); // 获取子节点head下的子节点script
- // 遍历Header节点下的Response节点
- while (iters.hasNext()) {
- Element itemEle = (Element) iters.next();
- String username = itemEle.elementTextTrim("username"); // 拿到head下的子节点script下的字节点username的值
- String password = itemEle.elementTextTrim("password");
- System.out.println("username:" + username);
- System.out.println("password:" + password);
- }
- }
- Iterator iterss = rootElt.elementIterator("body"); ///获取根节点下的子节点body
- // 遍历body节点
- while (iterss.hasNext()) {
- Element recordEless = (Element) iterss.next();
- String result = recordEless.elementTextTrim("result"); // 拿到body节点下的子节点result值
- System.out.println("result:" + result);
- Iterator itersElIterator = recordEless.elementIterator("form"); // 获取子节点body下的子节点form
- // 遍历Header节点下的Response节点
- while (itersElIterator.hasNext()) {
- Element itemEle = (Element) itersElIterator.next();
- String banlce = itemEle.elementTextTrim("banlce"); // 拿到body下的子节点form下的字节点banlce的值
- String subID = itemEle.elementTextTrim("subID");
- System.out.println("banlce:" + banlce);
- System.out.println("subID:" + subID);
- }
- }
- } catch (DocumentException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * @description 将xml字符串转换成map
- * @param xml
- * @return Map
- */
- public static Map readStringXmlOut(String xml) {
- Map map = new HashMap();
- Document doc = null;
- try {
- doc = DocumentHelper.parseText(xml); // 将字符串转为XML
- Element rootElt = doc.getRootElement(); // 获取根节点
- System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
- Iterator iter = rootElt.elementIterator("head"); // 获取根节点下的子节点head
- // 遍历head节点
- while (iter.hasNext()) {
- Element recordEle = (Element) iter.next();
- String title = recordEle.elementTextTrim("title"); // 拿到head节点下的子节点title值
- System.out.println("title:" + title);
- map.put("title", title);
- Iterator iters = recordEle.elementIterator("script"); // 获取子节点head下的子节点script
- // 遍历Header节点下的Response节点
- while (iters.hasNext()) {
- Element itemEle = (Element) iters.next();
- String username = itemEle.elementTextTrim("username"); // 拿到head下的子节点script下的字节点username的值
- String password = itemEle.elementTextTrim("password");
- System.out.println("username:" + username);
- System.out.println("password:" + password);
- map.put("username", username);
- map.put("password", password);
- }
- }
- Iterator iterss = rootElt.elementIterator("body"); ///获取根节点下的子节点body
- // 遍历body节点
- while (iterss.hasNext()) {
- Element recordEless = (Element) iterss.next();
- String result = recordEless.elementTextTrim("result"); // 拿到body节点下的子节点result值
- System.out.println("result:" + result);
- Iterator itersElIterator = recordEless.elementIterator("form"); // 获取子节点body下的子节点form
- // 遍历Header节点下的Response节点
- while (itersElIterator.hasNext()) {
- Element itemEle = (Element) itersElIterator.next();
- String banlce = itemEle.elementTextTrim("banlce"); // 拿到body下的子节点form下的字节点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 parse(String xml)
- {
- Document doc = null;
- try {
- doc = DocumentHelper.parseText(xml); // 将字符串转为XML
- Element rootElt = doc.getRootElement(); // 获取根节点smsReport
- Iterator iters = rootElt.elementIterator("sendResp"); // 获取根节点下的子节点sms
- while (iters.hasNext()) {
- Element recordEle1 = (Element) iters.next();
- Iterator iter = recordEle1.elementIterator("sms");
- int i=0;
- // 遍历sms节点
- while (iter.hasNext()) {
- Element recordEle = (Element) iter.next();
- SmsSendResponseObject r = new SmsSendResponseObject();
- String phone = recordEle.elementTextTrim("phone"); // 拿到sms节点下的子节点stat值
- String smsID = recordEle.elementTextTrim("smsID"); // 拿到sms节点下的子节点stat值
- System.out.println(phone+"==="+smsID);
- }
- }
- } catch (DocumentException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- // 下面是需要解析的xml字符串例子
- String xmlString = "" + "" + ""
- + "" + ""
- + "" + "0" + ""
- + "1000" + "36242519880716"
- + "" + " " + "";
- /*
- * Test2 test = new Test2(); test.readStringXml(xmlString);
- */
- Map map = readStringXmlOut(xmlString);
- Iterator iters = map.keySet().iterator();
- while (iters.hasNext()) {
- String key = iters.next().toString(); // 拿到键
- String val = map.get(key).toString(); // 拿到值
- System.out.println(key + "=" + val);
- }
- String xml="137000000ff8080813349da9001334f0eed8c5923187000000ff8080813349da9001334f0eee045924";
- parse(xml);
- }
- }
运行之后的结果会是:
根节点: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
java解析xml字符串(用dom4j)的更多相关文章
- java解析xml字符串为实体(dom4j解析)
package com.smsServer.Dhst; import java.util.HashMap; import java.util.Iterator; import java.util.Ma ...
- java解析xml字符串方法
一,用DOM4J 针对无重复标签的xml字符串格式,如下: 针对此种情况可用DOM4J解析法,引入 dom4j的相关jar包代码如下: Document document=DocumentHelpe ...
- 最简单的JAVA解析XML字符串方法
引入 dom4j 包<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifa ...
- Java解析XML字符串,取出其中<aaaa><![CDATA[(XXX)]]></aaa>里面的XXX值,也可以使用xml解析的其他方式,这是最简单的字符串解析
直接贴一段业务代码,这段代码是解析请求返回的xml格式字符串,为了取出其中的值便于下一步的使用. @RequestMapping(value="/search",produces ...
- 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来 ...
- dom4j解析xml字符串实例
DOM4J 与利用DOM.SAX.JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml ...
- 使用Java解析XML文件或XML字符串的例子
转: 使用Java解析XML文件或XML字符串的例子 2017年09月16日 11:36:18 inter_peng 阅读数:4561 标签: JavaXML-Parserdom4j 更多 个人分类: ...
- Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
[目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...
- Java解析XML之Dom4j
Java解析XML文件的方法有多种,个人感觉最常用的是使用Dom4j来解析XML文件.下面就简单介绍下Dom4j的基础使用. Dom4j需要jar包的支持,大家可以从网络上下载,如dom4j-1.6. ...
随机推荐
- mosquitto --用户配置 及权限管理
mosquitto中可以添加多个用户,只有使用用户名和密码登陆服务器才允许用户进行订阅与发布操作.可以说用户机制是mosquitto重要的安全机制,增强服务器的安全性.用户与权限配置需要修改3处地方: ...
- MySQL主从不一致情形与解决方法
参考:https://blog.csdn.net/hardworking0323/article/details/81046408 https://blog.csdn.net/lijingkuan/a ...
- vsftpd被动模式配置
1.vsftp配置 参考文章http://linux008.blog.51cto.com/2837805/6105992.设置vsftpd.conf开启被动模式参数 #vim pasv ...
- IP地址欺骗
1.什么是IP地址欺骗按照IP网络协议,数据包头包含来源地和目的地信息,而IP地址欺骗,就是通过伪造数据包爆头,使显示的信息源不是实际的来源,就像这个数据包是从另一台计算机上发送的. 2.IP地址欺骗 ...
- C++之在类内部访问对象的私有成员
一.引言 今天看项目里的一段代码发现,竟然可以再类的成员函数中访问该类的对象的私有成员.感觉不可思议. 自己写的实例代码: #include <iostream> using namesp ...
- 整合hibernate的lucene大数据模糊查询
大数据模糊查询lucene 对工作单使用 like模糊查询时,实际上 数据库内部索引无法使用 ,需要逐条比较查询内容,效率比较低在数据量很多情况下, 提供模糊查询性能,我们可以使用lucene全文 ...
- Python 元祖的操作
注意:元祖定义后不可修改,单个元祖后面必须加逗号,否则认为是字符串:tuple = ('apple',) 1.定义元祖 tuple = ('apple','banana','grape','orang ...
- 关于Context
Context字面意思是上下文,位于framework package的android.content.Context中,其实该类为LONG型,类似Win32中的Handle句柄.很多方法需要通过 C ...
- [WDT]内部看门狗和外部看门狗
1. 芯片内部看门狗 内部看门狗通常为芯片内部某个特殊定时器,用户可以通过手动初始化.设置timeout.使能.失能该看门狗,然后在线程中定时去喂狗,从而达到检测应用程序跑飞.跑死的情况. 在Linu ...
- java生成webservice
使用Eclipse生成一个WebService应用 1.创建一个Dynamic web project 2.创建一个对外提供服务的类.比如: package com.guorui.services; ...