`
gloryme
  • 浏览: 124506 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

dom4j 解析例子

    博客分类:
  • java
阅读更多

 studentInfo.xml

xml 代码
  1. <?xml version="1.0" encoding="gb2312"?>  
  2. <students>  
  3.     <student age="25"><!--如果没有age属性,默认的为20-->  
  4.         <name>崔卫兵</name>  
  5.         <college>PC学院</college>  
  6.         <telephone>62354666</telephone>  
  7.         <notes>男,1982年生,硕士,现就读于北京邮电大学</notes>  
  8.     </student>  
  9.     <student>  
  10.         <name>cwb</name>  
  11.         <college leader="学院领导">PC学院</college><!--如果没有leader属性,默认的为leader-->  
  12.         <telephone>62358888</telephone>  
  13.         <notes>男,1987年生,硕士,现就读于中国农业大学</notes>  
  14.     </student>  
  15.     <student age="45">  
  16.         <name>xxxxx</name>  
  17.         <college leader="">xxx学院</college>  
  18.         <telephone>66666666</telephone>  
  19.         <notes>注视中,注释中</notes>  
  20.     </student>  
  21.     <student age="">  
  22.         <name>lxx</name>  
  23.         <college>yyyy学院</college>  
  24.         <telephone>88888888</telephone>  
  25.         <notes>注视中111,注释中222</notes>  
  26.     </student>  
  27. </students>  

Dom4jReadExmple.java

java 代码
  1. package dom4jExample.read;   
  2.   
  3. import java.io.File;   
  4. import java.util.HashMap;   
  5. import java.util.Iterator;   
  6.   
  7. import org.dom4j.Attribute;   
  8. import org.dom4j.Document;   
  9. import org.dom4j.DocumentException;   
  10. import org.dom4j.Element;   
  11. import org.dom4j.io.SAXReader;   
  12. /**  
  13.  * 利用dom4j进行XML编程  
  14.  * @author cuiweibing  
  15.  * @since 2007.8.10  
  16.  */  
  17. public class Dom4jReadExmple {   
  18.  /**  
  19.   * 遍历整个XML文件,获取所有节点的值与其属性的值,并放入HashMap中  
  20.   * @param filename String 待遍历的XML文件(相对路径或者绝对路径)  
  21.   * @param hm       HashMap 存放遍历结果,格式:<nodename,nodevalue>或者<nodename+attrname,attrvalue>  
  22.   */  
  23.  public void iterateWholeXML(String filename,HashMap<String,String> hm){   
  24.   SAXReader saxReader = new SAXReader();   
  25.   try {   
  26.    Document document = saxReader.read(new File(filename));   
  27.    Element root = document.getRootElement();   
  28. //   用于记录学生编号的变量   
  29.    int num=-1;   
  30.    //遍历根结点(students)的所有孩子节点(肯定是student节点)   
  31.          for ( Iterator iter = root.elementIterator(); iter.hasNext(); ) {   
  32.              Element element = (Element) iter.next();   
  33.              num++;   
  34.     // 获取person节点的age属性的值   
  35.              Attribute ageAttr=element.attribute("age");   
  36.     if(ageAttr!=null){   
  37.      String age = ageAttr.getValue();   
  38.      if (age != null&&!age.equals("")) {   
  39.       hm.put(element.getName() + "-"+ageAttr.getName()+ num, age);   
  40.      } else {   
  41.       hm.put(element.getName() + "-" +ageAttr.getName()+ num, "20");   
  42.      }   
  43.     }else{   
  44.      hm.put(element.getName() + "-age"+ num, "20");   
  45.     }   
  46.              //遍历student结点的所有孩子节点(即name,college,telphone,notes),并进行处理   
  47.              for ( Iterator iterInner = element.elementIterator(); iterInner.hasNext(); ) {   
  48.               Element elementInner = (Element) iterInner.next();   
  49.               if(elementInner.getName().equals("college")){   
  50.                hm.put(elementInner.getName()+ num, elementInner.getText());   
  51.                //获取college节点的leader属性的值   
  52.                Attribute leaderAttr=elementInner.attribute("leader");   
  53.                if(leaderAttr!=null){   
  54.        String leader = leaderAttr.getValue();   
  55.        if (leader != null&&!leader.equals("")) {   
  56.         hm.put(elementInner.getName() + "-"+leaderAttr.getName()+ num, leader);   
  57.        } else {   
  58.         hm.put(elementInner.getName() + "-" +leaderAttr.getName()+ num, "leader");   
  59.        }   
  60.                }else {   
  61.        hm.put(elementInner.getName() + "-leader"+ num, "leader");   
  62.       }   
  63.               }else{   
  64.                hm.put(elementInner.getName()+ num, elementInner.getText());   
  65.               }   
  66.              }   
  67.          }   
  68.   
  69.   } catch (DocumentException e) {   
  70.    // TODO Auto-generated catch block   
  71.    e.printStackTrace();   
  72.   }   
  73.  }   
  74. }   
  75.   

TestDom4jReadExmple.java

java 代码
  1. package dom4jExample.read;   
  2.   
  3. import java.util.HashMap;   
  4.   
  5. /**  
  6.  * 测试Dom4jReadExmple解析的情况  
  7.  * @author cuiweibing  
  8.  * @since 2007.8.10  
  9.  */  
  10. public class TestDom4jReadExmple {   
  11.  public static void main(String[] args) {   
  12.      try{   
  13.        //获取解析完后的解析信息   
  14.        HashMap<String,String> hashMap;   
  15.        Dom4jReadExmple drb=new Dom4jReadExmple();   
  16.        //遍历整个XML文件   
  17.        hashMap = new HashMap<String,String>();   
  18.        drb.iterateWholeXML("studentInfo.xml", hashMap);   
  19.        System.out.println("姓名\t年龄\t学院\t学院领导\t电话\t\t备注");   
  20.        for(int i=0;i<hashMap.size();i+=6){   
  21.          int j=i/6;   
  22.          System.out.print(hashMap.get("name"+j)+"\t");   
  23.          System.out.print(hashMap.get("student-age"+j)+"\t");   
  24.          System.out.print(hashMap.get("college"+j)+"\t");   
  25.          System.out.print(hashMap.get("college-leader"+j)+"\t");   
  26.          System.out.print(hashMap.get("telephone"+j)+"\t");   
  27.          System.out.println(hashMap.get("notes"+j)+"\t");   
  28.        }   
  29.      }catch(Exception ex){   
  30.        ex.printStackTrace();   
  31.      }   
  32.    }   
  33. }   
  34.   

运行结果

姓名 年龄 学院 学院领导 电话  备注
崔卫兵 25 PC学院 leader 62354666 男,1982年生,硕士,现就读于北京邮电大学 
cwb 20 PC学院 学院领导 62358888 男,1987年生,硕士,现就读于中国农业大学 
xxxxx 45 xxx学院 leader 66666666 注视中,注释中 
lxx 20 yyyy学院 leader 88888888 注视中111,注释中222 

分享到:
评论

相关推荐

    Dom4j例子,可以解析大部分的XML

    在TestDom4j项目中,可能包含一个简单的Java程序,演示了如何使用Dom4j解析XML文件、查找特定元素、修改元素内容,并将结果写回XML。这个例子对于初学者来说非常有帮助,因为它展示了Dom4j在实际应用中的基本用法。...

    dom4j 解析xml例子

    在这个“dom4j解析xml例子”中,我们将深入探讨DOM4J如何帮助开发者在Java环境中有效地处理XML数据。 首先,我们需要了解XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置...

    dom4j解析xml.txt

    ### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J(Document Object Model for XML)是一款用于处理XML文档的轻量级Java库。它提供了一种非常简单且灵活的方式来创建、读取、修改和删除XML文档。DOM4J的主要...

    java dom4j解析xml

    - 以下是一个简单的DOM4J解析XML的例子: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class Dom4jExample { public static void main(String...

    java dom4j 解析xml的例子,可用

    1. **DOM4J解析XML**:DOM4J通过创建一个可操作的树形结构来表示XML文档,这棵树称为文档对象模型。解析XML时,DOM4J首先读取XML文件并构建一个节点结构,然后你可以通过API遍历和修改这个结构。例如,你可以通过...

    dom4j解析xml例子

    这个“dom4j解析xml例子”压缩包应该包含了一些示例代码、帮助文档和使用说明,旨在帮助初学者快速理解和应用DOM4J。 在XML解析领域,DOM(Document Object Model)是一种将XML文档转换为内存对象树的方法。DOM4J是...

    dom4j 解析xml实例

    在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...

    Dom4j解析配置文件与xml小例子

    本篇将通过一个实际的例子来探讨如何使用Dom4j解析XML配置文件。 首先,我们需要了解DOM4J的基本概念。DOM(Document Object Model)是一种用于表示XML或HTML文档的标准模型,而Dom4j是基于DOM的,但它比标准的DOM...

    Java使用sax、dom、dom4j解析xml文档

    以下是一个DOM4J解析XML的简单示例: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class Dom4jExample { public static void main(String[] args) {...

    Dom4J完成例子,Dom4J

    在这个例子中,我们将深入探讨Dom4j的核心功能和使用方法。 **1. XML解析** 解析XML文档是Dom4j的基本操作之一。通过`DocumentBuilderFactory`和`DocumentBuilder`,我们可以将XML字符串或文件转换为`Document`...

    dom4j解析天气预报

    下面,我们将通过一个具体的例子探讨如何使用DOM4J解析天气预报的XML文件。假设我们有一个名为"weather_forecast.xml"的文件,里面包含城市的天气预报信息: ```xml 北京"&gt; &lt;temperature&gt;18 &lt;humidity&gt;35% ...

    dom4j基本例子

    在"parse"文件中,可能包含了用DOM4J解析XML文件的代码。解析XML时,DOM4J会将整个文档加载到内存中,形成一个可以遍历的树形结构,称为Document对象。这个过程允许开发者通过XPath或直接的Element导航来访问XML数据...

    用 dom4j解析xml例子

    本文将深入解析一个使用DOM4J进行XML文件读取的例子,并详细阐述其中涉及的关键知识点。 ### DOM4J概述 DOM4J(Document Object Model for Java)是一个开源的、高性能的XML解析器。它提供了类似于DOM的接口,但比...

    dom4j简单例子

    在这个“dom4j简单例子”中,我们将深入理解DOM4J的基本用法和核心概念,以帮助你更好地利用这个库在实际项目中处理XML数据。 1. **DOM4J基本概念** - **Document**: 表示整个XML文档,它是DOM4J树结构的根节点。 ...

    dom4j解析xml文件的例子

    在这个例子中,我们将深入理解DOM4J如何解析XML文件,同时也会探讨一些相关工具的使用。 XML(eXtensible Markup Language)是一种结构化数据格式,广泛应用于数据交换、配置文件等领域。DOM(Document Object ...

    dom4j解析xml,连接oracle数据库

    在本实例中,我们将深入探讨如何使用DOM4J解析XML,并利用这些数据连接Oracle数据库进行数据操作。 首先,让我们了解DOM4J的基本用法。DOM4J的主要类包括`Document`、`Element`、`Attribute`和`Namespace`。`...

    dom4j解析案例

    这个例子展示了如何使用DOM4J解析XML,提取指定节点(“item”),并将属性和文本内容存储在Map中。实际应用中,你可能需要根据实际的XML结构来调整路径选择和数据处理逻辑。 总之,DOM4J是处理XML的强大工具,尤其...

    使用dom4j和jaxen解析xml

    - **dom4j+jaxen操作XML**:首先使用dom4j解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...

    Dom4j解析XML(例子)+Dom4j 使用简介

    **Dom4j解析XML(例子)+Dom4j 使用简介** Dom4j是一个强大的Java库,专门用于处理XML文档。它提供了灵活且易于使用的API,使得XML的读取、写入、遍历和修改变得简单。在本文中,我们将深入探讨Dom4j的主要功能和用法...

    dom4j解析xml

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

Global site tag (gtag.js) - Google Analytics