`
starbhhc
  • 浏览: 649025 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

java解析xml字符串(用dom4j)

    博客分类:
  • java
 
阅读更多
  1. 1、xml文档或节点转换为字符串

 

  1. //xml文档或节点转换为字符串  
  2.     @Test  
  3.     public void test5()throws Exception{  
  4.         //创建SAXReader对象  
  5.         SAXReader reader = new SAXReader();  
  6.         //读取文件 转换成Document  
  7.         Document document = reader.read(new File("src/cn/com/yy/dom4j/s.xml"));  
  8.         //document转换为String字符串  
  9.         String documentStr = document.asXML();  
  10.         System.out.println("document 字符串:" + documentStr);  
  11.         //获取根节点  
  12.         Element root = document.getRootElement();  
  13.         //根节点转换为String字符串  
  14.         String rootStr = root.asXML();  
  15.         System.out.println("root 字符串:" + rootStr);  
  16.         //获取其中student1节点  
  17.         Element student1Node = root.element("student1");  
  18.         //student1节点转换为String字符串  
  19.         String student1Str = student1Node.asXML();  
  20.         System.out.println("student1 字符串:" + student1Str); 

 

 

 

 

  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

分享到:
评论

相关推荐

    java解析XML dom4j dom4j-1.6.1.jar

    Java解析XML时,dom4j是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...

    使用dom4j将xml字符串转换成Bean对象

    当我们需要将XML字符串解析并映射到Java Bean对象时,dom4j是一个常用的库。本篇文章将详细探讨如何使用dom4j库实现这个过程。 首先,dom4j是一个强大的Java XML API,它提供了丰富的功能,如读取、写入、修改和...

    Dom4j解析XML文档.doc

    无论是读取XML文件,解析XML字符串,还是创建、修改和遍历XML结构,DOM4J都提供了简洁的接口,极大地简化了开发者的工作。在实际的开发中,掌握DOM4J的使用,能够帮助你更有效地处理XML数据,提高代码的可维护性和...

    JAVA 解析XML 的JAr包 DOM4j.Jar JDOM.jar

    本篇将详细介绍使用DOM4j.Jar和JDOM.jar这两个Java库来解析XML文件的方法。 **DOM4j** DOM4j是一个灵活且功能强大的Java XML API,它提供了全面的XML处理解决方案,包括读取、写入、操作和转换XML文档。DOM4j的...

    xml字符串解析

    在Java中,我们可以使用DOM4J来解析XML字符串,以下是一个简单的步骤: 1. **导入DOM4J库**:确保项目中已经引入了DOM4J的依赖,如果没有,可以添加对应的Maven或Gradle依赖。 2. **读取XML字符串**:从文件、网络...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    1. **解析XML**:DOM4J可以读取XML文件,将其转换为一个树形结构,即Document对象。解析器有SAX和DOM两种模式,SAX是事件驱动的,适用于大文件,而DOM则将整个文档加载到内存中,适合小文件。 2. **创建XML**:DOM4...

    DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式

    在生成XML字符串时,DOM4J提供了简洁的API来构建和输出XML文档。 4. JDOM JDOM是另一个Java的XML处理库,它专注于提供纯Java解决方案。JDOM提供了一个基于树的API,类似于DOM,但设计更简洁,易于使用。与DOM相比,...

    dom4j 解析写入xml

    1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件

    DOM4J 读取xml字符串

    **DOM4J 读取XML字符串** DOM4J 是一个非常强大的 Java XML API,它提供了丰富的功能,使得处理 XML 文件变得更加简单。DOM4J 的设计理念是简洁、灵活且高性能,它支持 SAX 和 DOM 解析,并提供了面向对象的接口。...

    xml数据前后台解析:jdom与dom4j源码,程序可以跑

    本文将深入探讨XML数据在前后台解析的过程中,重点介绍两种主流的Java XML解析库——JDOM和DOM4J,并提供实际运行的程序示例。同时,我们还会讨论如何使用jQuery在前端解析XML并展示数据。 首先,让我们了解XML的...

    dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改变得更加简单。在这个场景中,我们关注的是如何使用DOM4J以String的形式读取XML内容,然后将String的值赋给XML...

    通过dom4j解析xml字符串(示例代码)

    通过DOM4J解析XML字符串是Java开发中处理XML数据的常见方法。DOM4J是一个非常灵活的用于处理XML、HTML和XSLT的Java库,它提供了丰富的API来操作XML文档,包括创建、读取、修改和遍历XML文档。在本文中,我们将深入...

    dom4j解析字符串

    在这个实例中,我们使用dom4j的DocumentHelper类来解析XML字符串。首先,我们import dom4j的相关类,包括Document、DocumentException、DocumentHelper和Element等。然后,我们使用DocumentHelper.parseText方法来...

    dom4j解析XML所需要的jar包

    这段代码首先使用`DocumentHelper.parseText`方法解析XML字符串,然后获取根元素并打印其名称,最后找到名为`element`的子元素并输出其内容。 总的来说,DOM4J结合Jaxen库为Java开发者提供了强大且灵活的XML处理...

    java解析xml用到的dom4j,jaxen包

    在这个例子中,我们首先使用DOM4J的`DocumentHelper.parseText`方法解析XML字符串,然后创建一个`DOMXPath`对象并使用XPath表达式"/root/element"找到`root`元素下的第一个`element`元素。接着,我们改变这个元素的...

    利用DOM4J解析SOAP的简单示例

    DOM4J是一个强大的Java库,用于处理XML文档,包括读取、写入、修改和解析。本篇文章将深入探讨如何利用DOM4J解析SOAP消息中的元素,以便在实际项目中进行有效的数据提取和操作。 首先,理解SOAP消息的结构至关重要...

    Java创建xml文档笔记(DOM,DOM4J)

    // 输出XML字符串 System.out.println(document.asXML()); } } ``` 这段代码将创建一个简单的XML文档,其中包含一个名为"root"的根元素,根元素下有一个名为"child"的子元素,其内容为"Hello, World!"。 总结,...

    dom4j解析xml详解,包含源代码,dom4j.jar包

    在提供的源码中,我们可以看到如何使用DOM4J来解析XML文件。例如,以下代码展示了如何读取XML文件并打印根元素: ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io....

    DOM4J解析XML

    1. **DOM解析方式**:DOM4J通过DOM接口来解析XML,将整个XML文档加载到内存中形成一个树形结构,称为DOM树。这样做的优点是可以方便地通过路径导航访问任何元素,缺点是如果XML文件过大,可能会消耗大量内存。 2. *...

Global site tag (gtag.js) - Google Analytics