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 ...
随机推荐
- 20180712-Java Character类
char ch = 'a';// Unicode for uppercase Greek omega characterchar uniChar = '\u039A';//字符数组char[] cha ...
- selenium来识别数字验证码
用python写一爬虫,需要模拟登陆,并且有数字验证码.通过selenium+pytesseract+PIL可以实现验证码识别并登陆.三大步: 用selenium截屏,此时截取的是整个页面的 用PIL ...
- ArayList的一些常用法<一> 转
转:http://yy.azj.blog.163.com/blog/static/18508700320122893451389/ import java.util.ArrayList; import ...
- centos R包 tidyverse安装
tidyverse安装失败,install.packages('tidyverse') 错误原因大概是其中有个依赖包xml2安装不上,解决办法是yum install libxml2-devel,这样 ...
- install mysql firewall
- postman使用动态token发post请求小结
最近使用postman做接口测试,感觉挺好用的. 测试中,每次post请求都要携带一个token,token是通过get请求得来的,动态变化的,并且token有有效期的限制.为了避免重复获取token ...
- 为什么每次打出的包都是Release版本呢?
参考了:xcodebuild命令 https://www.cnblogs.com/liuluoxing/p/8622108.html 重新打个包,验证一下想法
- 【ABAP系列】SAP ABAP 工单增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 工单增强 ...
- poi3617Best Cow Line ——贪心法
给定长度为N(1≤N≤2000)的字符串S,要构造一个长度为N的字符串T.期初,T是一个空串,随后反复进行下列任意操作. ·从S的头部删除一个字符,加到T的尾部 ·从S的尾部删除一个字符,加到T的尾部 ...
- [Udemy] Recommender Systems and Deep Learning in Python
1. Welcome 主要讲四部分内容: non-personized systems popularity: 基于流行度或者最大利益化的推荐. 缺点也明显:你可能在特殊地方有些特殊需求, 或者你本来 ...