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

使用dom4j的xpath解析xlm文件

    博客分类:
  • java
阅读更多
package com.njusc.xmlTest;  
 
import java.io.File;  
import java.util.Iterator;  
import java.util.List;  
 
import org.dom4j.Attribute;  
import org.dom4j.Document;  
import org.dom4j.Element;  
import org.dom4j.Node;  
import org.dom4j.io.SAXReader;  
 
public class TestDom4jReadExmple  
{  
    /* 
     * 创建一个测试xml      bicashy.xml 
     *  
    <?xml version="1.0" encoding="UTF-8"?> 
    <students> 
        <student age="25"> 
            <name>云天河</name> 
            <college>野外学院</college> 
            <telephone>62354666</telephone> 
            <notes>一个从小在山野里长大的少年,双亲早亡,小小年纪就开始了自立的生活。</notes> 
        </student> 

        <student> 
            <name>韩菱纱</name> 
            <college leader="侠盗高飞">盗墓学院</college> 
            <telephone>62358888</telephone> 
            <notes>女,出身于盗墓世家,却对辨识墓穴位置、破解诡异机关、地脉风水之学颇有研究。</notes> 
        </student> 
        <student age="18"> 
            <name>柳梦璃</name> 
            <college leader="">名门贵族</college> 
            <telephone>66666666</telephone> 
            <notes>梦璃是一个满怀柔情的女孩子,但她最温柔的一面只会留给自己喜欢的人。</notes> 
        </student> 
        <student age="18"> 
            <name>慕容紫英</name> 
            <college>昆仑学院</college> 
            <telephone>88888888</telephone> 
            <notes>外冷内热、嫉恶如仇的热血青年,不但剑术超群,铸剑之术更是厉害。</notes> 
        </student> 
    </students> 
    */ 
 
      
    public static void main(String[] args) {  
        try{  
          //获取解析完后的解析信息  
          //利用XPath操作XML文件,获取想要的属性值  
 
            
          SAXReader saxReader = new SAXReader();  
          Document document = saxReader.read(new File("d:/bicashy.xml"));  
            
          /*直接定位到student name为云天河的节点的age属性*/ 
          List list = document.selectNodes("/students/student[name=\"云天河\"]/@age");  
          Iterator iter = list.iterator();  
          if (iter.hasNext()) {  
           Attribute attribute = (Attribute) iter.next();  
           System.out.println("云天河-"+attribute.getName()+":"+attribute.getValue());  
          }  
            
            
          /*获取学生姓名为"韩菱纱"所在的学院名称*/ 
          list = document.selectNodes("/students/student[name=\"韩菱纱\"]/college");  
          iter = list.iterator();  
          if (iter.hasNext()) {  
            Element element = (Element) iter.next();  
            String name = element.getName();  
            String value = element.getText();  
            System.out.println("韩菱纱-"+name+":"+value);  
          }  
            
            
          /*获取学生姓名为"韩菱纱"所在学院的师傅*/ 
          list = document.selectNodes("/students/student[name=\"韩菱纱\"]/college/@leader");  
          iter = list.iterator();  
          if (iter.hasNext()) {  
           Attribute attribute = (Attribute) iter.next();  
           System.out.println("韩菱纱-college-"+attribute.getName()+":"+attribute.getValue());  
          }  
            
          /*获取学生姓名为"柳梦璃"的简介*/ 
          list = document.selectNodes("/students/student[name=\"柳梦璃\"]/notes");  
          iter = list.iterator();  
          if (iter.hasNext()) {  
              Element element = (Element) iter.next();  
              System.out.println("柳梦-"+element.getName()+":"+element.getText());  
          }  
            
          /*获取年龄为"18"的学生的姓名、学院和电话号码*/ 
          list = document.selectNodes("/students/student[@age='18']");  
          for(Object o:list){    
              Node  n = (Node ) o;   
              Element name = (Element)n.selectObject("name");  
              Element college = (Element)n.selectObject("college");  
              Element telephone = (Element)n.selectObject("telephone");  
              System.out.println(name.getText()+"__ "+"college:"+college.getText()  
                      +"  telephone:"+telephone.getText());  
           }  
            
          /*获取年龄为"18",college的leader为空的学院名称*/ 
          list = document.selectNodes("/students/student[@age='18']/college[@leader='']");  
          iter = list.iterator();  
          if (iter.hasNext()) {  
              Element element = (Element) iter.next();  
              System.out.println(""+element.getName()+":"+element.getText());  
          }  
            
            
          /*获取年龄为"18"姓名为"柳梦璃"、姓名、学院和电话号码*/ 
          list = document.selectNodes("/students/student[@age='18'][name='柳梦璃']");  
          for(Object o:list){    
              Node  n = (Node ) o;   
              Element name = (Element)n.selectObject("name");  
              Element college = (Element)n.selectObject("college");  
              Element telephone = (Element)n.selectObject("telephone");  
              System.out.println(name.getText()+"__ "+"college:"+college.getText()  
                      +"  telephone:"+telephone.getText());  
           }  
            
          /*获取年龄大于18的人的 姓名、学院和电话号码*/ 
          list = document.selectNodes("/students/student[@age>18]");  
          for(Object o:list){    
              Node  n = (Node ) o;   
              Element name = (Element)n.selectObject("name");  
              Element college = (Element)n.selectObject("college");  
              Element telephone = (Element)n.selectObject("telephone");  
              System.out.println(name.getText()+"__   "+"college:"+college.getText()  
                      +"  telephone:"+telephone.getText());  
           }  
            
          /*获取student所有的人的 姓名、学院和电话号码  */ 
          //注  /students/student  可简写为//student根节点可以省去  
          list = document.selectNodes("//student");    
          for(Object o:list){    
              Node  n = (Node ) o;   
              Element name = (Element)n.selectObject("name");  
              Element college = (Element)n.selectObject("college");  
              Element telephone = (Element)n.selectObject("telephone");  
              System.out.println(name.getText()+"__   "+"college:"+college.getText()  
                      +"  telephone:"+telephone.getText());  
           }  
           
        }catch(Exception ex){  
          ex.printStackTrace();  
        }  
      }  

分享到:
评论

相关推荐

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

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

    dom4j和xpath的jar包

    DOM4J可以加载和解析XML文档,然后利用XPath表达式进行数据检索。这种方式避免了传统遍历DOM树的低效,尤其是在大型XML文档中,XPath的查询性能优势尤为明显。 在Java项目中,通常会将DOM4J和XPath的jar包打包在...

    dom4j解析xml文件的压缩包

    为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...

    使用dom4j 和本地dom 解析xml 文件

    在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...

    使用DOM4J和xpath解析XML(一)

    NULL 博文链接:https://bbsanwei.iteye.com/blog/266394

    分别使用DOM和DOM4j解析XML文件

    本篇文章将详细介绍如何使用DOM(Document Object Model)和DOM4j这两种流行的方法来解析XML文件。 首先,DOM是一种标准的W3C推荐的解析XML的方法,它将整个XML文档加载到内存中,形成一个树形结构,便于程序进行...

    dom4j 和xpath

    相比于标准的DOM(Document Object Model)API,DOM4J更加轻量级,性能更优,同时提供了更多的高级特性,如XPath支持、SAX和DOM的集成、事件驱动的解析等。DOM4J通过树形结构表示XML文档,使得开发者可以方便地访问...

    xml+dom4j+xpath资料

    首先,使用DOM4J的解析器读取XML文件,创建Document对象;然后,利用XPath的API,如`org.dom4j.XPath`,编译并执行XPath表达式,获取到所需节点列表;最后,对这些节点进行进一步的操作,如遍历、修改或删除。 举个...

    使用dom4j和jaxen解析xml

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

    使用Maven管理项目,实现DOM4j操作XML文件

    2. **创建XML文件**:使用DOM4j创建一个新的XML文件,这通常涉及到`Document`、`Element`和`Writer`的使用。例如,你可以创建一个包含根元素和子元素的XML文件。 3. **动态创建XML节点**:在已有的XML文档中动态...

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

    DOM4J库集成了XPath支持,使得在DOM4J中使用XPath查询XML数据变得非常方便。 DOM4J的主要特性包括: 1. **XML解析**:DOM4J提供了多种解析方式,包括DOM、SAX和StAX,以适应不同的性能和内存需求。 2. **文档模型**...

    Demo4j和XPath解析XML的文件路径表达式(ZVON.org - X 路径教程)

    本教程将重点讨论如何使用Java库Demo4j与XPath一起工作,以解析XML文件中的路径表达式。 首先,我们需要理解XPath的基本概念。XPath使用路径表达式来选取XML文档中的节点,这些路径表达式类似于文件系统中的路径。...

    dom4j 解析 大 文件

    在处理大文件时,DOM4J结合XPath的使用,可以有效地管理和分析大量数据。在这个场景下,描述提到的测试涉及到了50多万条数据的解析,这无疑是对DOM4J性能的一次挑战。 首先,我们来深入理解DOM4J的核心概念。DOM4J...

    dom4j解析xml详解

    - **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...

    Dom4j 、XPath解析Xml所需的jar包和dom4j API

    在Java编程中,解析XML文档通常需要借助库,如DOM4J和XPath。DOM4J是一个灵活且功能强大的开源Java XML API,它提供了XML的读取、写入、修改和遍历等功能。XPath则是W3C标准中的一个查询语言,用于在XML文档中查找...

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...

    Dom4j 解析Xml文档及 XPath查询 学习笔记

    本篇学习笔记将深入探讨如何使用Dom4j解析XML文档,并结合XPath进行查询。 **一、Dom4j解析XML** 1. **添加依赖**:首先,你需要在项目中引入Dom4j库。如果是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml...

Global site tag (gtag.js) - Google Analytics