8.xpath(dom4j支持的jar)
1.使用dom4j支持xpath的操作(xpath可以直接获取到某个元素)
(1)第一种形式
/AAA/DDD/BBB:表示一层一层的,AAA下面DDD下面的BBB元素
(2)第二种形式
//BBB:表示获取所有元素名字是BBB的元素
(3)第三种形式
/*:获取所有的元素
(4)第四种形式
BBB[1]:表示获取第一个BBB元素
BBB[last()]:表示获取最后一个BBB元素
(5)第五种形式
//BBB[@id]:表示获取所有名字是BBB并且元素上面有id属性的元素
(6)第六种形式
//BBB[@id='b1']:表示获取所有名字是BBB且元素上面有id属性的值b1
2.使用dom4j支持xpath具体操作
(1)默认情况下,dom4j是不支持xpath的,如果我们要使用xpath,那么必须把包导入项目中
包名:jaxen-1.1-beta-6.jar
位置:我们解压后dom4j_jar包\dom4j-1.6.1\lib中
(2)在dom4j里里面提供了两个方法,用来支持xpath
selectNodes("xpath表达式") 获取多个元素,返回一个list<Node>集合
selectSingNode("xpath表达式") 并获取单个元素,返回一个Element
3.下面是一个简单的查询实例
需求:获取修改第一个name元素中的文本为老王
xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
<persion>
<one>
<id>1001</id>
<name>张三</name>
<age>18</age>
</one>
<two>
<id>1002</id>
<name>李四</name>
<age>20</age>
</two>
</persion>
实现代码如下:
package Day4; import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo1 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取整个文档document
Document document = saxReader.read("src/Day4/1.xml");
//直接获取第一个name元素
Node node = document.selectSingleNode("//name[1]");
//修改name元素的值为老王
node.setText("老王");
//更新xml文件
FileOutputStream writer = new FileOutputStream("src/Day4/1.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(writer, format);
xmlWriter.write(document);
xmlWriter.close();
}
}
4.简化上面的代码
可以把获取解析器和document封装
可以把更新代码封装
可以xml的相对地址封装(这样便于修改xml地址文件,这样写我们就不需要在实现带码中直接修改)
代码如下:
package Day4; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo2 {
public static void main(String[] args) {
//获取document
Document document = GetDoument.getDocument(GetDoument.path);
//直接获取第一个name元素
Node node = document.selectSingleNode("//name[1]");
//修改name元素的值为老王
node.setText("老王");
//更新xml文件
NewXml.newXml(document, GetDoument.path);
}
} //可以把获取解析器和document封装
class GetDoument{
//封装xml文件的相对地址
public static final String path = "src/Day4/1.xml"; public static Document getDocument(String path) {
try {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取整个文档document
Document document = saxReader.read(path);
return document;
} catch (DocumentException e) {
e.printStackTrace();
}
return null;
}
} //可以把更新代码封装
class NewXml{ public static void newXml(Document document,String path) {
FileOutputStream writer;
try {
writer = new FileOutputStream(path);
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(writer, format);
xmlWriter.write(document);
xmlWriter.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
8.xpath(dom4j支持的jar)的更多相关文章
- dom4j支持Xpath的具体操作
***默认情况下,dom4j不支持xpath. 如果想要使用xpath,需要引入jaxen-1.1-beta-6.jar包. 在dom4j中提供了两个方法来支持xpath. ***selectNode ...
- SpringBoot整合Mybatis,多数据源,事务,支持java -jar 启动.
用了一段时间SpringBoot,之前配置MYBATIS ,在打包WAR 放到tomcat下正常,但是WAR已经过时了,现在流行直接打包JAR 丢到DOCKER 里,无奈JAR 启动的时候MAPPER ...
- flink如何动态支持依赖jar包提交
通常我们在编写一个flink的作业的时候,肯定会有依赖的jar包.flink官方希望你将所有的依赖和业务逻辑打成一个fat jar,这样方便提交,因为flink认为你应该对自己的业务逻辑做好单元测试, ...
- SpringBoot application.yml logback.xml,多环境配置,支持 java -jar --spring.profiles.active
趁今天有时间整理了一下 启动命令为 //开发环境 java -jar app.jar --spring.profiles.active=dev--server.port=8060 //测试环境 jav ...
- Springboot打包支持第三方jar
有时候我们需要的jar在maven里不存在,需要手动引入.比如,钉钉sdk <dependency> <groupId>com.aliyun</groupId> & ...
- maven导入dom4j以及jaxen.jar报java.lang.UnsupportedOperationException:错误
<dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> & ...
- SpringBoot application.yml logback.xml,多环境配置,支持 java -jar --spring.profiles.active(转)
趁今天有时间整理了一下 启动命令为 //开发环境 java -jar app.jar --spring.profiles.active=dev--server.port=8060 //测试环境 jav ...
- 简单用DOM4J结合XPATH解析XML
由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 ...
- Java---XML的解析(2)-DOM4J解析/Xpath
Dom4j: Dom SUN dom在加载时,将所有元素全部加载内存 DOM4j - 第三方. Dom4j是一个开源.灵活的XML API. 目前很多开源框架如struts,hibernate都使用d ...
随机推荐
- RTF筛选工具
您可借助此项筛选程序对具备.rtf扩展名的文档进行爬行遍历,以便通过搜索结果对目标文档加以访问调用.管理员应先在相关服务器上对程序文件进行注册,方可运行此项工具. 用户下载.安装并使用相关代码的行为即 ...
- (转)字符编码笔记:ASCII,Unicode 和 UTF-8
转:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之 ...
- GIS网站收藏
igismap: https://www.igismap.com/ 高德WebAPI: https://lbs.amap.com/api/javascript-api/example/other-ga ...
- 【CDN+】 Spark 的入门学习与运行流程
前言 上文已经介绍了与Spark 息息相关的MapReduce计算模型,那么相对的Spark的优势在哪,有哪些适合大数据的生态呢? Spark对比MapReduce,Hive引擎,Storm流式计算引 ...
- virtualenv-windows下排坑
1. 安装 pip install virtualenv pip install virtualenvwrapper-win (win下一定要有这个 -win,不然后续 workon,mkvir ...
- Git015--标签管理
Git--标签管理 本文来自于:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/ ...
- HTML DOM cursor 属性
值 描述 url 需被使用的自定义光标的URL 注释:请在此列表的末端始终定义一种普通的光标,以防没有由 URL 定义的可用光标. default 默认光标(通常是一个箭头) auto 默认.浏览器设 ...
- JPA Example查询
//创建查询条件数据对象 Customer customer = new Customer(); customer.setAddress("河南省郑州市"); customer.s ...
- java序列化的相关介绍
1.什么是序列化?为什么要用序列化? 序列化就是将对象状态转换为可保持或传输的格式的过程.与序列化相对的就是反序列化,他将流转换成对象.这两个过程结合起来,可以轻松地存储和传输数据. 注意:对象序列化 ...
- THUPC/CTS/APIO2019划水记
THUPC:划水的咸鱼 CTS:打铁 APIO:压线cu 终于又回归了文化课. 落下10天的课程,OI又得停一停了 这次划水,又见识了许多的神仙,再一次被吊打 5.11~5.20,有太多的事情需要回忆 ...