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

使用dom4j和XPath解析XML之例子二 .

阅读更多

包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), TestDom4jReadExmple.java(测试解析的结果) (由于使用csdn blog自带的代码粘贴工具会朝里加入一些"..."字符,虽然利于查看,但是不利于把代码copy出来运行,而亲自运行代码对程序员来说是很重要的,故没有使用csdn blog自带的代码粘贴工具来插入代码,而是用着用直白的方式):

 studentInfo.xml

<?xml version="1.0" encoding="gb2312"?>
<students>
    <student age="25"><!--如果没有age属性,默认的为20-->
        <name>崔卫兵</name>
        <college>PC学院</college>
        <telephone>62354666</telephone>
        <notes>男,1982年生,硕士,现就读于北京邮电大学</notes>
    </student>
    <student>
        <name>cwb</name>
        <college leader="学院领导">PC学院</college><!--如果没有leader属性,默认的为leader-->
        <telephone>62358888</telephone>
        <notes>男,1987年生,硕士,现就读于中国农业大学</notes>
    </student>
    <student age="45">
        <name>xxxxx</name>
        <college leader="">xxx学院</college>
        <telephone>66666666</telephone>
        <notes>注视中,注释中</notes>
    </student>
    <student age="">
        <name>lxx</name>
        <college>yyyy学院</college>
        <telephone>88888888</telephone>
        <notes>注视中111,注释中222</notes>
    </student>
</students>

Dom4jReadExmple.java

package dom4jExample.read;

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
 * 利用dom4j与XPath进行XML编程
 * @author cuiweibing
 * @since 2007.8.10
 */
public class Dom4jReadExmple {
 /**
  * 利用XPath操作XML文件,获取指定节点或者属性的值,并放入HashMap中
  * @param filename String 待操作的XML文件(相对路径或者绝对路径)
  * @param hm       HashMap 存放选择的结果,格式:<nodename,nodevalue>或者<nodename+attrname,attrvalue>
  */
 public void getSelectedNodeValue(String filename,HashMap<String,String> hm){
  try {
   SAXReader saxReader = new SAXReader();
   Document document = saxReader.read(new File(filename));
   //获取学生姓名为"崔卫兵"的年龄
   List list = document.selectNodes("/students/student[name=/"崔卫兵/"]/@age");
   Iterator iter = list.iterator();
   if (iter.hasNext()) {
    Attribute attribute = (Attribute) iter.next();
    hm.put("崔卫兵-"+attribute.getName(), attribute.getValue());
   }else{
    hm.put("崔卫兵-age", "20");
   }
   //获取学生姓名为"崔卫兵"的年龄
   list = document.selectNodes("/students/student[name=/"cwb/"]/@age");
   iter = list.iterator();
   if (iter.hasNext()) {
    Attribute attribute = (Attribute) iter.next();
    hm.put("cwb-"+attribute.getName(), attribute.getValue());
   }else{
    hm.put("cwb-age", "20");
   }
      //获取学生姓名为"cwb"所在的学院名称
   list = document.selectNodes("/students/student[name=/"cwb/"]/college");
   iter = list.iterator();
   if (iter.hasNext()) {
     Element element = (Element) iter.next();
     String name = element.getName();
     String value = element.getText();
     hm.put("cwb-"+name, value);
   }
   //获取学生姓名为"cwb"所在学院的领导
   list = document.selectNodes("/students/student[name=/"cwb/"]/college/@leader");
   iter = list.iterator();
   if (iter.hasNext()) {
    Attribute attribute = (Attribute) iter.next();
    hm.put("cwb-college-"+attribute.getName(), attribute.getValue());
   }else{
    hm.put("cwb-college-leader", "leader");
   }
   //获取学生姓名为"lxx"所在的学院名称
   list = document.selectNodes("/students/student[name=/"lxx/"]/college");
   iter = list.iterator();
   if (iter.hasNext()) {
     Element element = (Element) iter.next();
     String name = element.getName();
     String value = element.getText();
     hm.put("lxx-"+name, value);
   }
   //获取学生姓名为"lxx"所在学院的领导
   list = document.selectNodes("/students/student[name=/"lxx/"]/college/@leader");
   iter = list.iterator();
   if (iter.hasNext()) {
    Attribute attribute = (Attribute) iter.next();
    hm.put("lxx-college-"+attribute.getName(), attribute.getValue());
   }else{
    hm.put("lxx-college-leader", "leader");
   }
  } catch (Exception ex) {
   ex.printStackTrace();
  }
 }
}

TestDom4jReadExmple.java

package dom4jExample.read;

import java.util.HashMap;

/**
 * 测试Dom4jReadExmple解析的情况
 * @author cuiweibing
 * @since 2007.8.10
 */
public class TestDom4jReadExmple {
 public static void main(String[] args) {
     try{
       //获取解析完后的解析信息
       HashMap<String,String> hashMap;
       Dom4jReadExmple drb=new Dom4jReadExmple();
       //利用XPath操作XML文件,获取想要的属性值
       hashMap = new HashMap<String,String>();
       drb.getSelectedNodeValue("studentInfo.xml", hashMap);
       System.out.println("崔卫兵-age:"+hashMap.get("崔卫兵-age"));
       System.out.println("cwb-age:"+hashMap.get("cwb-age"));
       System.out.println("cwb-college:"+hashMap.get("cwb-college"));
       System.out.println("cwb-college-leader:"+hashMap.get("cwb-college-leader"));
       System.out.println("lxx-college:"+hashMap.get("lxx-college"));
       System.out.println("lxx-college-leader:"+hashMap.get("lxx-college-leader"));
     }catch(Exception ex){
       ex.printStackTrace();
     }
   }
}

运行结果

崔卫兵-age:25
cwb-age:20
cwb-college:PC学院
cwb-college-leader:学院领导
lxx-college:yyyy学院
lxx-college-leader:leader

分享到:
评论

相关推荐

    Dom4j结合XPath解析XML文件路径表达式

    本篇文章将深入探讨如何使用Dom4j,一个流行的Java库,结合XPath来解析XML文件中的路径表达式,同时阐述相对路径和绝对路径的匹配原则。 首先,我们要了解Dom4j库。Dom4j是一个灵活且高效的处理XML的Java库,它提供...

    使用dom4j和jaxen解析xml

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

    xml+dom4j+xpath资料

    我们可以使用DOM4J和XPath找到所有年龄: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.XPath; // 解析XML文档 Document document = DocumentHelper.parseText...

    Dom4J采用XPath操纵XML教程及例子

    2. **解析XML文档**:使用Dom4J的`DocumentHelper`类,我们可以加载XML文件并创建一个`Document`对象,如下: ```java String xmlString = "&lt;root&gt;&lt;element attr='value'&gt;Text&lt;/element&gt;&lt;/root&gt;"; Document ...

    dom4j中xpath的使用

    下面是一个简单的示例,展示如何使用DOM4J和XPath找到XML文档中的特定元素: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Node; import org.dom4j.XPath; // 创建XML...

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

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

    java dom4j 解析xml的例子,可用

    2. **基本用法**:在Java程序中,首先需要导入dom4j库,然后使用`DocumentBuilderFactory`创建`DocumentBuilder`,接着使用`DocumentBuilder`解析XML文件,得到`Document`对象。你可以通过`Document`对象获取XML的根...

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

    Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...

    dom4j_xpath_junitTest.zip

    在JUnit测试中,我们可以使用DOM4J来读取、解析XML文件,然后通过XPath选取特定内容,验证其是否符合预期。例如,一个简单的测试用例可能如下所示: ```java import org.junit.Test; import static org.junit....

    dom4j用到的xpath\dom4j等一系列jar包

    在这个例子中,我们首先创建了一个XML字符串,然后使用`DocumentHelper.parseText()`解析成DOM4J的`Document`对象。接着,我们创建一个XPath表达式来选择带有特定属性的`element`元素,最后通过`selectSingleNode()`...

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

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

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

    dom4j 解析xml例子

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

    dom4j解析和创建xml简单实例

    1. DOM4J解析XML 当我们处理XML文档时,首先需要将其加载到内存中。DOM4J提供了Document接口来表示整个XML文档。使用SAXReader类可以从XML文件创建一个Document对象。例如: ```java SAXReader reader = new ...

    Dom4j遍历解析XML

    ### Dom4j遍历解析XML知识点详解 #### 一、Dom4j简介及环境搭建 Dom4j(Document Object Model for Java)是一个Java语言的开源XML API,它提供了非常便捷的方式来解析、创建以及操作XML文档。相较于其他XML解析库...

    dom4j 解析xml文件小例子

    DOM4J库是基于DOM模型的,但它比标准的Java DOM API更易于使用和性能更好。DOM模型将整个XML文档加载到内存中形成一棵树形结构,称为文档对象模型(Document Object Model)。通过遍历这棵树,我们可以访问和操作XML...

    dom4j解析xml例子

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

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

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

    dom4j 读取带有命名空间的xml文件

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了丰富的API,使得解析、创建、操作XML变得简单。在处理带有命名空间的XML文件时,DOM4J库显得尤为重要,因为XML命名空间是XML规范中一个关键的概念,用于避免...

    dom4j解析xml文件的例子

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

Global site tag (gtag.js) - Google Analytics