记录一些 xpath 的常规用法,备忘。

 //3、XPath 了解(用于在xml中选取元素,类似 jquery 选择器)
//3.1 路径
Node node1 = root.selectSingleNode("/person");
System.out.println(node1.asXML()); //3.2 “@” 选取节点属性(取属性一般用selectSingleNode)
Node node4 = root.selectSingleNode("//person").selectSingleNode("@name");
System.out.println(node4.asXML()); //3.3 “[]” 既可以用作过滤,也可以作下标使用
List<Node> nodes1 = root.selectNodes("//person[@cls!='04']"); //从当前路径找node名为person并且cls属性值不是04的节点
for(Node tmpNode : nodes1)
{
System.out.println(tmpNode.asXML());
}
          //3.4 小结:
       -------- 路径 -------------------
// "//person" “//”表示从当前节点的位置开始(忽略中间路径),去找后代节点中有无person节点
// "//persons//a" 两个 //
// "../.." 父节点的父节点
// "/person" 从根节点开始找(不忽略中间路径,要一级一级往下找)。。不仅找不到,还影响后续代码的执行。
--------- 过滤 和 运算符 ------
// "//person[a]" //从当前路径找, node名为person,并且 含有a子节点
// "//person[@id]" //从当前路径找 , node名为person, 并且有id属性
// "//person[@age>=24]" = != > >= < <= (但是不支持*=、$=、^=、~=等)
// "//person[@age>=24 and @age<30]" 与
// "//person[@age>=24][@age<30]" 作用同上
// "//person[@age>26 or @age<20]" 或
// "//person[not(@age<25)]" 非
// "//persons/dog | //persons/person" 返回两个list的并集("//persons/dog and //persons/person"达不到这样的效果)
      ---------- 下标 ------------
            // "//person[2]" 取匹配节点中的第2个节点(下标从1开始)
            // "//person[last()-1]" 取倒数第二个       ----------- 通配符 -----------
            // "//person/@name" 匹配所有person节点的name
            // "//persons/person" 匹配persons下的所有person子节点
            // "//persons/*" 通配符,匹配persons下的所有子节点 ----------- 函数 -----------------
            // "/node()" 匹配根节点下的所有节点(包含文本节点和注释节点)(要注意与"/*"区别)
            // "//dog/text()" 匹配dog节点下的文本
            // "//child::node()" 从当前位置开始,递归所有后代节点(包含文本节点和注释节点)
            // "//child::*" 从当前位置开始,递归所有后代节点       ----------- 有命名空间的 ---------------     
            // "//namespace::*" 输出所有的namespace,有重复!
            // "//*[local-name()='person']" 匹配local-name 为person 的节点,如 ??:person
            // "//mt:person" 带上命名空间就好了
            // "/cumt:classes/mc:persons/mt:person"

note: 后代节点和子节点 不是一回事,后代节点还包括子节点的子节点的……

使用 dom4j 处理 xml (2)的更多相关文章

  1. 使用dom4j读取xml连接数据库与之单例模式

    使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...

  2. Dom4j把xml转换成Map(固定格式)

    /** * 可解析list * * @param fileName * @return * @throws Exception */ @SuppressWarnings("unchecked ...

  3. 【dom4j xml】使用dom4j处理XML文件--测试过程遇到的问题

    首先 关于dom4j的API,有如下: 当然  其中的实体引用有以下: 测试使用环境: 使用Maven搭建web环境,pom.xml文件配置如下: <project xmlns="ht ...

  4. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  5. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  6. Dom4j解析xml

    public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...

  7. 使用Dom4j进行XML解析

    1  概述 在进行ESB集成项目中,使用到了很多系统的接口,这些接口传输的数据大部分都采用了XML的格式,这样在使用ESB开发服务时就需要对XML数据进行解析或拼接的操作,本文以项目中流程服务为例,讲 ...

  8. 使用dom4j解析XML文档

    dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...

  9. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  10. 用DOM4J解析XML文件案例

    用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:

随机推荐

  1. Fliptile [POJ3279] [开关问题]

    题意 给定一张n*m的方格图,有1,0两种数字,每次可以选取一个十字进行翻转,1变成0,0变成1,问最少需要翻转几次,使它全部变成0,全部如果有重复的,按字典序最小的进行输出: 输入 第一行n,m 下 ...

  2. [jzoj]3456.【NOIP2013模拟联考3】恭介的法则(rule)

    Link https://jzoj.net/senior/#main/show/3456 Description 终于,在众亲们的奋斗下,最终boss 恭介被关进了库特设计的密室.正当她们松了一口气时 ...

  3. iOS 开发中字典和字符串的转换

    1.字符串转字典 NSString * jsonString = @""; NSData *jsonData = [jsonString dataUsingEncoding:NSU ...

  4. Spark on Yarn with HA

    Spark 可以放到yarn上面去跑,这个毫无疑问.当Yarn做了HA的时候,网上会告诉你基本Spark测不需做太多的关注修改,实际不然. 除了像spark.yarn开头的相关配置外,其中一个很重要的 ...

  5. React_基本原理_ajax

    React 基本原理 初始化显示界面 创建虚拟DOM树 渲染到 原生 DOM 树 绘制界面显示 更新界面 setState() 更新状态机 重新创建虚拟 DOM 树 新/旧树比较差异 (执行一次 DO ...

  6. vue全选与取消全选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. layer过去的时间不能选择,只能选择未来的时间 LayUI中的时间日期控件,设置时间范围,

    默认Layui中的时间控件显示如下: 我当时系统时间是2018-06-07, 我需要做的是2018-06-07之后过去的时间不能选择 <p><span>时间范围:</sp ...

  8. 增值税发票 成都金锐发票IC卡读入

    黑盘-操作  打开发票领购---网络发票分发----点击查询--分发. 白盘操作:

  9. nregistering JMX-exposed beans

    https://blog.csdn.net/yang474231561/article/details/81738632 https://stackoverflow.com/questions/507 ...

  10. 字符串Hash || BZOJ 3555: [Ctsc2014]企鹅QQ || P4503 [CTSC2014]企鹅QQ

    题面:[CTSC2014]企鹅QQ 题解:无 代码: #include<iostream> #include<cstring> #include<cstdio> # ...