使用 dom4j 处理 xml (2)
记录一些 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)的更多相关文章
- 使用dom4j读取xml连接数据库与之单例模式
使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...
- Dom4j把xml转换成Map(固定格式)
/** * 可解析list * * @param fileName * @return * @throws Exception */ @SuppressWarnings("unchecked ...
- 【dom4j xml】使用dom4j处理XML文件--测试过程遇到的问题
首先 关于dom4j的API,有如下: 当然 其中的实体引用有以下: 测试使用环境: 使用Maven搭建web环境,pom.xml文件配置如下: <project xmlns="ht ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- Dom4j解析xml
public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...
- 使用Dom4j进行XML解析
1 概述 在进行ESB集成项目中,使用到了很多系统的接口,这些接口传输的数据大部分都采用了XML的格式,这样在使用ESB开发服务时就需要对XML数据进行解析或拼接的操作,本文以项目中流程服务为例,讲 ...
- 使用dom4j解析XML文档
dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- 用DOM4J解析XML文件案例
用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:
随机推荐
- PBRT笔记(1)——主循环、浮点误差
PBRT2与3之间的改动 增加了一个功能完备的BRDF模型,支持体积光照与重要性多重路径采样. 次表面散射,基于光线追踪技术,无需预处理. 解决浮点数四折五入的问题 光子映射 样本生成 第一章多了讲并 ...
- 2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest
A. Auxiliary Project 完全背包. #include<stdio.h> #include<iostream> #include<string.h> ...
- C++ 简单的控制台贪吃蛇小游戏
由于比较懒,所以不怎么写,觉得这样不应该.我应该对自己学的做出整理,不管是高端低端,写出来是自己的. // 贪吃蛇.cpp : 定义控制台应用程序的入口点. // #include "std ...
- 从构建分布式秒杀系统聊聊Lock锁使用中的坑
前言 在单体架构的秒杀活动中,为了减轻DB层的压力,这里我们采用了Lock锁来实现秒杀用户排队抢购.然而很不幸的是尽管使用了锁,但是测试过程中仍然会超卖,执行了N多次发现依然有问题.输出一下代码吧,可 ...
- 常见问题:bootstrap datepicker日期插件汉化
引入简体中文js(bootstrap-datepicker.zh-CN.js),并在datepicker属性配置language为‘zh-CN’即可,示例如下: $(".form_datet ...
- Oracle 索引 index
索引是一个模式对象,其中包含每个值的条目,该条目出现在表或集群的索引列中,并提供对行的直接快速访问. 创建一个索引: create index 索引名 on 表名 (字段名); 删除索引: dro ...
- SpringBoot微服务架构下的MVC模型总结
SpringBoot微服务架构下的MVC模型产生的原因: 微服务概念改变着软件开发领域,传统的开源框架结构开发,由于其繁琐的配置流程 , 复杂的设置行为,为项目的开发增加了繁重的工作量,微服务致力于解 ...
- python全栈开发 * 表格标签 表单标签 css 引入方式 * 180807
html部分 一.表格标签<table> 1.一个表格<table>由每行<tr>组成的,每行是由<td>组成的. 注意: 一个表格是由行组成的(行是由 ...
- mysql5.7采坑
2018年8月21日16:57:16 datetime 类型新默认值不能全部为 0000-00-00 00:00:00date也是新默认值直接date('Y-m-d H:i:s','0');datet ...
- 使用 Windows PowerShell 实现 Web UI 自动化 (转)
转自 https://msdn.microsoft.com/zh-cn/magazine/cc337896.aspx