由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素

使用dom4j支持xpath的操作的几种主要形式

     第一种形式
            /AAA/DDD/BBB: 表示一层一层的,AAA下面 DDD下面的BBB
       第二种形式
            //BBB: 表示和这个名称相同,表示只要名称是BBB,都得到
         第三种形式
            /*: 所有元素
         第四种形式
           BBB[1]: 表示第一个BBB元素
             BBB[last()]:表示最后一个BBB元素
         第五种形式
            //BBB[@id]: 表示只要BBB元素上面有id属性,都得到
         第六种形式
            //BBB[@id='b1'] 表示元素名称是BBB,在BBB上面有id属性,并且id的属性值是b1

使用dom4j支持xpath具体操作
         默认的情况下,dom4j不支持xpath,如果想要在dom4j里面是有xpath,第一步需要,引入支持xpath的jar包,如下:

       aaarticlea/png;base64,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" alt="" />
         在dom4j里面提供了两个方法,用来支持xpath
           selectNodes("xpath表达式"),获取多个节点
       selectSingleNode("xpath表达式"),获取一个节点

应用简单案例:

1.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<class>
<student>
<name>张三</name>
<sid>111111</sid>
</student>
<student id="stu1">
<name>李四</name>
<sid>222222</sid>
</student>
</class>

Java代码

import java.util.List;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Dom4jXpath { public static void main(String[] args) throws Exception {
select();//查询所有name的值
//select2();//查询id=stu1的学生的name的值
}
//查询所有name的值
private static void select() throws Exception {
SAXReader saxReader=new SAXReader();
Document document=saxReader.read("src/1.xml");
List<Node>list=document.selectNodes("//name");
for(int i=0;i<list.size();i++)
System.out.println(list.get(i).getText());
}
//查询id=stu1的学生的name的值
private static void select2() throws Exception {
SAXReader saxReader=new SAXReader();
Document document=saxReader.read("src/1.xml");
Node node=document.selectSingleNode("//student[@id='stu1']/name");
System.out.println(node.getText());
}
}

简单用DOM4J结合XPATH解析XML的更多相关文章

  1. java使用dom4j和XPath解析XML与.net 操作XML小结

    最近研究java的dom4j包,使用 dom4j包来操作了xml 文件 包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), ...

  2. 使用Dom4j的xPath解析xml文件------xpath语法

    官方语法地址:http//www.w3school.com.cn/xpath/index.asp xpath使用路径表达式来选取xml文档中的节点或节点集.节点是通过沿着路径(path)或者步(ste ...

  3. JAVA通过XPath解析XML性能比较(原创)

    (转载请标明原文地址) 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种 ...

  4. JAVA通过XPath解析XML性能比较

    转自[http://www.cnblogs.com/mouse-coder/p/3451243.html] 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 ...

  5. 使用dom4j创建和解析xml文件

    使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...

  6. dom4j生成和解析xml文件

    dom4j生成和解析xml文件 要生成和解析如下格式的xml文件: <?xml version="1.0" encoding="UTF-8"?> & ...

  7. DOM4J生成、解析XML实例

    import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterato ...

  8. Xpath解析xml

    Xpath解析xml其实最主要的是查找xml文档中信息,而且不需要了解xml文档结构 package com.huawei.xml; import java.io.InputStream;import ...

  9. Dom4J配合XPath解析schema约束的xml配置文件问题

    如果一个xml文件没有引入约束,或者引入的是DTD约束时,那么使用dom4j和xpath是可以正常解析的,不引入约束的情况本文不再展示. 引入DTD约束的情况 mybook.dtd: <?xml ...

随机推荐

  1. 压测 apache ab 初探

    2015年10月30日 14:58:34 ab是apache自带的压测命令, 在其bin目录下边, 不仅可以压测Apache, 也可以测nginx或其他服务器 可以模拟上传post值 (-p, 与下边 ...

  2. Python处理JSON数据

    python解析json时为了方便,我们首先安装json模块,这里选择demjson,官方网址是:http://deron.meranda.us/python/demjson/ 访问之后点击页面的的D ...

  3. ASM:《X86汇编语言-从实模式到保护模式》第14章:保护模式下的特权保护和任务概述

    ★PART1:32位保护模式下任务的隔离和特权级保护  这一章是全书的重点之一,这一张必须要理解特权级(包括CPL,RPL和DPL的含义)是什么,调用门的使用,还有LDT和TSS的工作原理(15章着重 ...

  4. AIX系统的环境变量设置

    AIX系统的环境变量设置 用户环境的定义是通过设置环境变量来实现的.AIX系统主要使用两大类profile文件来定义用户环境.一类是用来为所有用户定制环境,另一类是为个人定义自己的环境. 登录时,sh ...

  5. 魅族MX3\MX2 在MTP模式下恢复手机误删数据教程

    昨天帮室友的魅族mx3升级系统,结果不小心把他手机里的照片删了.但是自从flyme升级到3后,以前的U盘模式就改成了MTP模式,这样再连接电脑后就没办法用电脑上的数据恢复软件恢复数据了,因为压根就检测 ...

  6. SpringMVC java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name

    当跳转到一个含有form表单的页面的时候 如<form:form commandName="useCarInfo" 必须要new一个useCarInfo的同名实例给jsp来接 ...

  7. 【linux】学习5

    鸟哥那本书第11章的内容 管理整个计算机硬件的是操作系统的内核(kernel),内核是需要保护的,我们一般用户只能通过shell来跟内核通信.Shell是用户操作系统的接口 cat  /etc/pas ...

  8. 【python】getopt使用

    来源:http://blog.chinaunix.net/uid-21566578-id-438233.html 注意对比:[python]argparse模块 作者:limodou版权所有limod ...

  9. struts2.0整合json

    框架:struts2.0+hibernate2+spring 今天写代码时,需要用到json,我就直接加了两个jar包:json-lib-2.1-jdk15.jar,struts2-json-plug ...

  10. objective-c数组笔记

    数组与可变数组 2015年6月14日 1.数组 数组的初始化方式 1.初始化一个空数组 NSArray *array = [[NSArray alloc] init];//不可变数组,数组内不可以添加 ...