`

dom4j.jar解析xml字符串

    博客分类:
  • xml
 
阅读更多

package org.dm.swingTest;

 

//先加入dom4j.jar包 

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;

 

/**   

* @Title: TestDom4j.java

* @Package 

* @Description: 解析xml字符串

* @author 无处不在

* @date 2012-11-20 下午05:14:05

* @version V1.0   

*/

public class TestDom4j {

 

  public static 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 {

          // 将字符串转为XML

          doc = DocumentHelper.parseText(xml); 

          // 获取根节点

          Element rootElt = doc.getRootElement(); 

          // 拿到根节点的名称

          System.out.println("根节点:" + rootElt.getName()); 

 

          // 获取根节点下的子节点head

          Iterator iter = rootElt.elementIterator("head"); 

          // 遍历head节点

          while (iter.hasNext()) {

 

              Element recordEle = (Element) iter.next();

              // 拿到head节点下的子节点title值

              String title = recordEle.elementTextTrim("title"); 

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

              map.put("title", title);

              // 获取子节点head下的子节点script

              Iterator iters = recordEle.elementIterator("script"); 

              // 遍历Header节点下的Response节点

              while (iters.hasNext()) {

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

                  // 拿到head下的子节点script下的字节点username的值

                  String username = itemEle.elementTextTrim("username"); 

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

 

                  System.out.println("username:" + username);

                  System.out.println("password:" + password);

                  map.put("username", username);

                  map.put("password", password);

              }

          }

 

          //获取根节点下的子节点body

          Iterator iterss = rootElt.elementIterator("body"); 

          // 遍历body节点

          while (iterss.hasNext()) {

              Element recordEless = (Element) iterss.next();

              // 拿到body节点下的子节点result值

              String result = recordEless.elementTextTrim("result"); 

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

              // 获取子节点body下的子节点form

              Iterator itersElIterator = recordEless.elementIterator("form"); 

              // 遍历Header节点下的Response节点

              while (itersElIterator.hasNext()) {

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

                  // 拿到body下的子节点form下的字节点banlce的值

                  String banlce = itemEle.elementTextTrim("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 main(String[] args) {

 

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

      String xmlString = "<html>" + "<head>" + "<title>dom4j解析一个例子</title>"

              + "<script>" + "<username>yangrong</username>"

              + "<password>123456</password>" + "</script>" + "</head>"

              + "<body>" + "<result>0</result>" + "<form>"

              + "<banlce>1000</banlce>" + "<subID>36242519880716</subID>"

              + "</form>" + "</body>" + "</html>";

 

      /*

       * Test2 test = new Test2(); test.readStringXml(xmlString);

       */

 

      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);

      }

  }

}

 

分享到:
评论

相关推荐

    POI操作excel的所有jar包(3.7-3.10)+dom4j.jar+xmlbean.jar

    2. **dom4j-1.6.1.jar**:这是一个Java XML处理库,它在POI中用于解析和生成XML文档。在处理Excel时,尤其是xlsx格式,DOM4J可以帮助解析和构建XML结构,因为.xlsx文件本质上是基于ZIP压缩的XML文件集合。 3. **...

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

    5. 序列化:将修改后的`Document`对象转换回XML字符串,或者写入到文件。 三、DOM4J解析源码分析 在提供的源码中,我们可以看到如何使用DOM4J来解析XML文件。例如,以下代码展示了如何读取XML文件并打印根元素: `...

    java解析XML所需要的完整包(包括XStream.jar,dom4j.jar和xpull/xpp.jar)

    例如,你可以直接使用`XStream.fromXML(String xml)`方法将XML字符串转化为Java对象,反之亦然。 2. **dom4j.jar**: DOM4J是一个非常灵活的用于处理XML的Java库,它是基于DOM(Document Object Model)模型的,但...

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

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

    java读写xml文档_dom4j.jar

    在这个例子中,我们首先使用`DocumentHelper.parseText()`解析XML字符串,然后通过`getRootElement()`获取根元素,接着访问元素和属性,最后修改元素内容并输出。 而`book.xml`可能是一个用于测试的XML文件,内容...

    dom4j-1.6.1.jar和ojdbc14_g.jar包

    3. 序列化:dom4j可以将XML文档对象序列化为字符串或写入文件,也可以将Java对象转换为XML格式。 二、ojdbc14_g.jar:Oracle数据库连接桥梁 ojdbc14_g.jar是Oracle公司提供的JDBC驱动程序,用于Java应用程序与...

    dom4j-1.6.1.jar

    9. **转换功能**:DOM4J能够将XML文档转换成其他格式,如HTML或Text,也可以将对象模型转换回XML字符串。 10. **IO操作**:DOM4J提供了一套简单的API来读写XML文件,支持流式处理,可以高效地处理大文件。 总结来...

    dom4j使用教程+dom4j.jar

    ### 一、DOM4J解析XML 1. **文档对象模型(Document Object Model)**: DOM4J通过Document类代表整个XML文档,它可以被视为XML文档的根节点。你可以通过`DocumentBuilderFactory`和`DocumentBuilder`来构建一个`...

    jaxen与dom4j.jar.rar

    2. 加载XML文档:使用Dom4j的`DocumentHelper.parseText()`或`SAXReader.read()`方法加载XML字符串或文件。 3. 查询XML:创建一个`XPathExpression`对象,使用`XPathFactory`和`XPath`接口,然后调用`evaluate()`...

    dom4j解析xml

    ### DOM4J解析XML DOM4J是一种Java语言下的轻量级XML处理库,它可以方便地解析、修改和创建XML文档。与DOM、SAX等其他XML解析技术相比,DOM4J提供了更丰富的功能和更好的性能表现。本文将详细介绍如何使用DOM4J解析...

    微信开发用到的jar包:json 解析,dom4j-1.6.1.jar,xstream-1.3.1.jar

    `dom4j-1.6.1.jar`是DOM4J的一个版本,包含所有必要的类和方法来处理XML任务。 3. XStream: XStream是另一个强大的Java库,用于XML序列化和反序列化。它可以将Java对象直接转换为XML,反之亦然。这在需要将Java...

    java解析XML dom4j dom4j-1.6.1.jar

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

    dom4j-2.1.0.jar

    - **XML序列化**:可以将XML对象转换回XML字符串或写入文件,实现XML数据的保存和传输。 - **事件处理**:支持XML事件驱动的处理,如监听XML解析过程中的事件。 - **Namespace支持**:DOM4J对XML命名空间有良好的...

    Dom4j常用jar包

    - 反序列化则可以将XML字符串转换回`Document`对象,使用`DocumentHelper.parseText()`即可完成。 6. **与Java集合框架的集成** - Dom4j的许多类都实现了Java集合接口,如`List`和`Map`,这使得我们可以方便地...

    jxl.jar;dom4j.jar;jsonplugin-0.34.jar;junit-3.8.2.jar;log4j-1.2.14.jar;struts2-codebehind-plugin-2.0

    2. **dom4j.jar**:这是一个强大的XML处理库,它支持DOM、SAX和StAX解析方式,并提供了一种简单易用的API来操作XML文档。通过dom4j,开发者可以方便地创建、修改、查询XML文档,对XML数据进行处理和分析。 3. **...

    dom4j-1.6.1.jar下载

    // 输出XML字符串 System.out.println(document.asXML()); } } ``` 以上代码创建了一个简单的XML文档,包含一个"Employees"根元素和一个"Employee"子元素,每个子元素都有"Name"和"Position"属性。这就是DOM4J的...

    dom4j 1.6.1.jar +dom.4j.api

    DOM4J 1.6.1.jar 和 dom4j.api 是两个与XML处理密切相关的库,主要用于解析、操作和生成XML文档。在这个压缩包中,我们有两个关键组件: 1. **DOM4J 1.6.1.jar**: DOM4J 是一个流行的Java库,它提供了对XML文档的...

    dom4j-1.6.1.jar与jaxen-1.1-beta-6.jar

    对于XML的处理,有两个重要的Java库:dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar。这两个库在XML解析和操作中扮演着关键角色。 **dom4j-1.6.1.jar** dom4j是一个灵活且功能强大的Java库,专门用于处理XML文档。它提供...

    dom4j解析XML所需要的jar包

    为了在Java项目中使用DOM4J解析XML,你需要将这两个jar文件(dom4j-1.6.1和jaxen-1.1-beta-7.jar)添加到你的类路径(classpath)中。这可以通过在IDE中配置构建路径,或者在命令行中指定 `-cp` 参数来完成。一旦...

Global site tag (gtag.js) - Google Analytics