由于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. 如何为自己的windows 8系统的电脑更换锁屏壁纸

    现在的人都喜欢个性,今天教大家如何设置自己想要的锁屏壁纸 工具/原料 Windows 8系统的笔记本电脑 方法/步骤   将鼠标移到电脑的右下方,点击设置按钮进入设置页面   找到更改电脑设置并点击进 ...

  2. selenium webdriver学习(一)

    package baidu; import java.io.File; import java.io.IOException; import junit.framework.TestCase; imp ...

  3. CentOS7 win7 u盘装双系统 修复系统

    环境: ASUS MB VER K45VD 笔记本电脑一台( i5-3230M 处理器. SATA . Nvidia). Windows7 系统 在 win7 下安装 CentOS7 使用 Ultra ...

  4. monitor disk

    #!/bin/bash # #top #Big_USERS - find big disk space users in various directories ################### ...

  5. codeforces 515A.Drazil and Date 解题报告

    题目链接:http://codeforces.com/problemset/problem/515/A 题目意思:问能否从 (0, 0) 出发,恰好走 s 步,到达该位置(a, b). 首先容易知道, ...

  6. 【QT】视频播放

    在网上没找到,在书上也没有.后来突然想直接在官网的类里面找Video 居然就有了. 把http://qt-project.org/doc/qt-5/qmediaplayer.html的例子补充完整后就 ...

  7. PHP安全编程:过滤用户输入

    如果你能正确可靠地识别和过滤输入,你的工作就基本完成了.最后一步是使用一个命名约定或其它可以帮助你正确和可靠地区分已过滤和被污染数据的方 法.我推荐一个比较简单的命名约定,因为它可以同时用在面向过程和 ...

  8. Loadrunner之HTTP接口测试脚本实例

    接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文结果与预期结果进行比对的过程,接口测试可以通过Jav ...

  9. Jmeter 中通过(_time函数)获取10位时间戳的方法

    meter的__time函数作用是取当前时间的时间戳,默认取的时间精确到了毫秒级别,所以获取的时间戳默认是13位的.  下图为取10位的时间戳的函数表达式(时间精确到秒) 

  10. weblogic监控

    http://wenku.baidu.com/link?url=tQPQ-dgm7NOkEGj_vemwtsPd6TJ6W3x6_0UBLgw61N982SwPlz-QFxqncsmPGqHwJAEF ...