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)的更多相关文章

  1. dom4j支持Xpath的具体操作

    ***默认情况下,dom4j不支持xpath. 如果想要使用xpath,需要引入jaxen-1.1-beta-6.jar包. 在dom4j中提供了两个方法来支持xpath. ***selectNode ...

  2. SpringBoot整合Mybatis,多数据源,事务,支持java -jar 启动.

    用了一段时间SpringBoot,之前配置MYBATIS ,在打包WAR 放到tomcat下正常,但是WAR已经过时了,现在流行直接打包JAR 丢到DOCKER 里,无奈JAR 启动的时候MAPPER ...

  3. flink如何动态支持依赖jar包提交

    通常我们在编写一个flink的作业的时候,肯定会有依赖的jar包.flink官方希望你将所有的依赖和业务逻辑打成一个fat jar,这样方便提交,因为flink认为你应该对自己的业务逻辑做好单元测试, ...

  4. SpringBoot application.yml logback.xml,多环境配置,支持 java -jar --spring.profiles.active

    趁今天有时间整理了一下 启动命令为 //开发环境 java -jar app.jar --spring.profiles.active=dev--server.port=8060 //测试环境 jav ...

  5. Springboot打包支持第三方jar

    有时候我们需要的jar在maven里不存在,需要手动引入.比如,钉钉sdk <dependency> <groupId>com.aliyun</groupId> & ...

  6. maven导入dom4j以及jaxen.jar报java.lang.UnsupportedOperationException:错误

    <dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> & ...

  7. SpringBoot application.yml logback.xml,多环境配置,支持 java -jar --spring.profiles.active(转)

    趁今天有时间整理了一下 启动命令为 //开发环境 java -jar app.jar --spring.profiles.active=dev--server.port=8060 //测试环境 jav ...

  8. 简单用DOM4J结合XPATH解析XML

    由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式    第一种形式   ...

  9. Java---XML的解析(2)-DOM4J解析/Xpath

    Dom4j: Dom SUN dom在加载时,将所有元素全部加载内存 DOM4j - 第三方. Dom4j是一个开源.灵活的XML API. 目前很多开源框架如struts,hibernate都使用d ...

随机推荐

  1. [CF1182F]Maximum Sine

    题意:\(f(x) = \text{abs}(\text{sin}(\frac{p}{q} \pi x))\),给定\(a,b,p,q\),求\(x\in[a,b]\)最大的\(f(x)\). 题解: ...

  2. MySQL:MySQL日期数据类型、MySQL时间类型使用总结

    MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型        存储空间      日期格式                日期范围------------  -------- ...

  3. 『转』一千行MySQL学习笔记

    /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysq ...

  4. 用redlock实现redis的分布式锁

    本文是一个demo,利用多进程,来模拟使用redis分布式锁的使用场景.本机需要安装redis,python3.7下运行代码.分布式锁用redlock这个包实现,实现步骤分三步: 实例化锁:rlock ...

  5. tomcat启动控制台报Exception in thread ''main".......“Could not find the main class:.....Bootstrap”问题

    startup.bat文件打开最后end下一行加pause调试,重新启动tomcat,发现配置没问题,但是依然报错,发现是jdk版本问题,jdk1.6无法与tomcat8适配,重新装个1.7版本的jd ...

  6. HTML--JS 随机背景色

    <html> <head> <title>背景随机变色</title> <script type="text/javascript&qu ...

  7. vue实现ajax请求(vue-resource和axios)

    1.vue-resouce实现ajax请求 vue1中主要用vue-resouce实现ajax请求, 2.1 引用vue-resouce 引入axios,直接在index.html文件中引入; 或者在 ...

  8. 图解Http阅读笔记(二)

    简单的HTTP协议 HTTP是一种不保存状态,即无状态(stateless)协议.HTTP 协议自身不对请求和响应之间的通信状态进行保存.也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不 ...

  9. 任务调度(02)Spring Schedule

    任务调度(02)Spring Schedule [toc] Spring 3.0 提供两种任务调度方式:一是定时任务调度:二是异步任务调度.这两种任务调度方式都是基于 JUC 实现的,是一种非常轻量级 ...

  10. IDEA 中常用插件

    怎么找到安装插件位置 Mybatis plugin 可以在mapper接口中和mapper的xml文件中来回跳转,就想接口跳到实现类那样简单. Lombok plugin 开发神器,可以简化你的实体类 ...