由于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. Python处理JSON数据

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

  2. Ubuntu 新建swap分区及启用

    个人电脑配置:500G机械硬盘+16G NGFF SSD+8G Physical Memory 之前安装Ubuntu16.04,默认装到NGFF的SSD里,/和swap分区一共才16G,于是删除swa ...

  3. pycharm的安装

    打开PyCharm官网http://www.jetbrains.com/pycharm/,选择Download,进入下载页面. 这时会出现2个版本,左边的那个是购买版,可以试用30天:右边那个是社区版 ...

  4. nyoj739_笨蛋难题四

    笨蛋难题四 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 这些日子笨蛋一直研究股票,经过调研,终于发现xxx公司股票规律,更可喜的是 笨蛋推算出这家公司每天的股价, ...

  5. Vue 为什么在 HTML 中监听事件?

    为什么在 HTML 中监听事件? 你可能注意到这种事件监听的方式违背了关注点分离(separation of concern)传统理念.不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑 ...

  6. 【leetcode】Decode Ways(medium)

    A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...

  7. 【XLL 文档翻译】【第1部分】 Add-in 管理器 和 XLL 接口函数

    xlAddInManagerInfo/xlAddInManagerInfo12 在 Excel 会话中,每一次调用 Add-In 管理器时,系统会调用这两个函数.此函数可以在 Add-In 管理器中提 ...

  8. ASIHTTPRequest详解 [经典]

    ASIHTTPRequest 对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPR ...

  9. C#复制、粘贴文本信息到剪贴板

    复制:private void button1_Click(object sender, System.EventArgs e) { // Takes the selected text from a ...

  10. ios waxpatch lua语法

    Wax Lua 使用方法 说一下 Wax 的特点,它支持你在脚本里使用任何 OC 的类,同样也支持你创建一个类. 使用一个类时你会这样使用: 1 2 NSString -- Returns the N ...