1.假如有下面的books.xml要用java dom4j解析查找。<?xml  version="1.0" encoding="UTF-8"?>

Lucene StudingDom4j TutorialsSpring in Action

O'Reilly

2.下面我们使用dom4j的xPath来解析:public void parseBooks(){

SAXReader reader = new SAXReader();

try {

Document doc = reader.read("books.xml");

Node root = doc.selectSingleNode("/books");

List list = root.selectNodes("book[@url='dom4j.com']");

for(Object o:list){

Element e = (Element) o;

String show=e.attributeValue("show");

System.out.println("show = " + show);

}

} catch (Exception e) {

e.printStackTrace();

}

}

3.代码详细解释如下:

Document doc = reader.read("books.xml");的意思是加载XML文档,此是可以用doc.asXML()来查看,它将打印整个xml文档。

Node root = doc.selectSingleNode("/books");是读取刚才加载的xml文档内的books节点下的所有内容,对于本例也是整个xml文档。

当然我们也可以加载/books下的某一个节点,如:book节点Node root = doc.selectSingleNode("/books/book");

或:Node root = doc.selectSingleNode("/books/*");

注意:如果有多个book节点,它只会读取第一个

root.asXML()将打印:

Lucene Studing

既然加载了这么多,那我怎么精确的查找得到我想要的节点呢,别急,看下面:List list = root.selectNodes("book[@url='dom4j.com']");

它的意思就是读取books节点下的book节点,且book的节点的url属性为dom4j.com

为什么使用list来接收呢,如果有两个book节点,且它们的url属性都为dom4j.com,此时就封闭到list里了。

如果想读取books下的所有book节点,可以这样:List list = root.selectNodes("book");

如果想读取books节点下的book节点下的title节点,可以这样:List list2 = root.selectNodes("book[@url='dom4j.com']/title[@id='123']");

注意:selectNodes()参数的格式:节点名[@属性名='属性值'],如:book[@url='dom4j.com']

如果有多个节点,用“/”分开,如:book[@url='dom4j.com']/title[@id='123']

最近就是读取封闭在List里的内容了,可以用Node来读取,也可以用Element来转换(node可以强制转换成Element)。

attributeValue("属性")是读取该节点的属性值

getText()是读取节点的的内容。

java dom4j 查找_java dom4j根据条件读取查找xml节点的方法相关推荐

  1. java实现折半查找_java语言之实现折半查找算法

    本文主要向大家介绍了java语言之实现折半查找算法,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 折半查找(Binary Search)又称为二分查找,其要求数据序列呈线性结构,也就 ...

  2. java数组二分查找_java 13-1 数组高级二分查找

    查找: 1.基本查找:数组元素无序(从头找到尾) 2.二分查找(折半查找):数组元素有序 pS:数组的元素必须有顺序,从小到大或者从大到小.以下的分析是从小到大的数组 二分查找分析: A:先对数组进行 ...

  3. xtragrid 某个值 查找_Java 经典算法:二分法查找(循环和递归两种方式实现)

    一.二分法查找简介 当数组或者集合中存放的元素数量非常多的时候,想要跟踪具体某个元素的位置或者是否存在,常规方式是循环每一个元素直到找到要查找的元素为止.这样的查找方式效率非常低下,这个时候需要使用二 ...

  4. java实体类转换xml_简单实体类和xml文件的相互转换方法

    最近写一个题目,要求将一组员工实体类转换成xml文件,或将xml文件转换成一组实体类.题目不难,但写完感觉可以利用泛型和反射将任意一个实体类和xml文件进行转换.于是今天下午立马动手 试了下,做了个简 ...

  5. java linkedlist 查找_Java中LinkedList真的是查找慢增删快

    测试结果 废话不多说,先上测试结果.作者分别在ArrayList和LinkedList的头部.尾部和中间三个位置插入与查找100000个元素所消耗的时间来进行对比测试,下面是测试结果 (感谢@Hosa ...

  6. java文件名特殊字符_Java 8:用名字读取特殊字符的文件

    我试图在Linux系统上读取名称中包含特殊字符的文件.我对操作系统没有任何控制权. 我试过使用IO和NIO.我不断地 java.nio.file.invalidPathException:格式错误的输 ...

  7. java条件运算符类型转换_Java运算符,条件表达式,类型转换

    运算符 首页要知道计算机最基本的功能就是执行数学运算,那Java中有那些现实中的加,减,乘,除呢 算术运算符 假设A=10,B=5 + 加法 A+B=15 - 减法 A-B=5 乘法,不像现实中的x, ...

  8. java异常判断_Java异常退出条件的判断示例代码

    无论是功能性代码还是算法性代码,程序都是一系列流程的合集 既然是流程就分为:一般流程和异常流程: 一般流程保证了基本功能: 异常流程则是对程序稳定性的保证,不能因为一些非法输入,项目就挂了: 注意,布 ...

  9. java取文本首位_java – 从文本文件中读取的第一个字符:[复制]

    参见英文答案 > Java read file got a leading BOM [  ]                                    6个 如果我写这段代码, ...

最新文章

  1. linux下的主要目录
  2. Mac版 Android Studio Android Sdk 更新方式
  3. 大数据技术Hbase 和 Hive 详解
  4. 备忘录模式(Memento Pattern)
  5. chrome浏览器调试css
  6. 规定计算机系统实现安全等级保护,计算机信息系统安全等级保护标准体系包括:信息系统安全保.DOC...
  7. 亿图图示输入文字后画面自动缩小
  8. 斐波那契数列(Fibonacci)
  9. 网络安全之暴力破解win7密码
  10. SpringBoot集成MongoDB实现两种CRUD
  11. 用户体验要素的五个层次
  12. Armbian搭建本地Gitea服务器
  13. SpringCloud学习笔记(一)(狂神视频笔记)
  14. Docker安装(Alibaba Cloud Linux 3)
  15. 用wireshark抓包疯狂聊天实验
  16. 单片机传输信息到服务器,单片机传数据到云服务器
  17. python连通图_用python实现无向图的连通性判断
  18. 虚拟机架设冒险岛服务器,冒险岛单机版V139虚拟机版+视频安装教程+139客户端+登录器...
  19. 用英语表达“谢谢”,thank you,thank you very much的其他多种方式
  20. 用户名片 2:Nginx 与图片深度解析

热门文章

  1. 第七篇(下),MPC工程化总结
  2. 每天学一点flash(68) 新闻列表制作
  3. 成交回报分析器2.0
  4. CTP2交易所报单回报
  5. excel表格中打开可以显示整个表格但是打印却只能打印一个单元格
  6. WiFi和WLAN有什么区别和联系?
  7. ros --- 双目相机内参与外参标定
  8. 安卓调用震动之Vibrator
  9. 如何实现数据驱动的运营增长?头部互联网企业的秘诀公开
  10. phpwind 论坛 转移