记录一些 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. SQL中DATENAME函数的用法

    在SQL数据库中有多种函数,下面就将为您介绍其中的DATENAME函数的用法,供您参考,希望对您学习SQL中函数的用法能有所帮助. 在SQL数据库中,DATENAME函数的作用是是从日期中提取指定部分 ...

  2. HDU3072 Intelligence System

    题目传送门 有个中文版的题面...和原题稍有不同 /* Description “这一切都是命运石之门的选择.” 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短信,并由此得知了伦 ...

  3. 使php支持pdo_mysql

    1.下载pdo_mysql包 wget https://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 2.追加编译php,使其module目录下生产pdo_mysql.so ...

  4. 安装tensorflowGPU版本

    ubuntu 16.0# 安装cuda ## 安装sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb.debsudo apt ...

  5. JavaScript(四)

    条件语句 通过条件来控制程序的走向,就需要用到条件语句. 运算符 1.算术运算符: +(加). -(减). *(乘). /(除). %(求余)2.赋值运算符:=. +=. -=. *=. /=. %= ...

  6. css margin使用技巧

    margin使用技巧: (1)设置元素水平居中:margin:x auto; (2)margin负值让元素位移及边框合并 水平居中:auto 代码: <!DOCTYPE html> < ...

  7. (91)Wangdao.com第二十四天_Mutation Observer API 突变监视器

    Mutation Observer API 突变监视接口 用来监视 DOM 变动. DOM 的任何变动,比如节点的增减.属性的变动.文本内容的变动,这个 API 都可以得到通知 概念上,它很接近事件, ...

  8. XAMPP 安装时 MySQL 无法启动,且提示端口占用。

    今天安装XAMPP时遇到了几个坑,忙活了一上午才搞定,写下来分享给同样遇坑的盆友们. MySQL 点击start 提示端口3306被占用,我改了端口号,又改了注册表,将注册表地址改为xampp中mys ...

  9. USB包格式解析(转)

    本文对应usb2.0协议的第八章Protocol Layer. 数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN.OUT.SETUP),事务最后构成传输(中断传输 ...

  10. Android平台targetSdkVersion设置及动态权限

    --关于Android动态权限和targetSdkVersion Android系统自6.0开始,提供动态权限机制,对于敏感权限(存储,定位,录音,拍照,录像等),需要在APP运行过程中动态向用户申请 ...