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. spring boot 应用发布到Harbor上

    具体的harbor配置和docker配置可以查看前面几篇,也包含了我遇到的问题 settings.xml配置 <server> <id>docker-hub</id> ...

  2. Java继承基础版

    继承是软件开发中实现代码复用的有效手段,如果一个类A继承了类B那么类B中的public.protected及默认修饰符修饰的实例成员或静态成员将被类A继承,也可以说类B的成员就是类A的成员而类A在此基 ...

  3. [design pattern](0) 概述

    一 引语 大家好,这是我第一次在网上写文章.从学校毕业一年多,感觉还有很多东西需要去学习.最近正在学习设计模式,希望可以在博客园把我学习的知识记录下来,能够和大家一起讨论设计模式相关的话题,也希望这个 ...

  4. HDU 5952 Counting Cliques(dfs)

    Counting Cliques Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  5. Vagrant 手册之 Provisioning - file 配置程序

    原文地址 Provisioner 命令:"file" 通过 file 配置程序可以上传宿主机的文件或目录到虚拟机中. 使用场景:将宿主机的 ~/.gitconfig 复制到虚拟机中 ...

  6. Django 安装、创建第一个项目

    一.版本 Django 版本对应的 Python 版本:   Django 版本 Python 版本 1.8 2.7, 3.2 , 3.3, 3.4, 3.5 1.9, 1.10 2.7, 3.4, ...

  7. Java 不被看好前景堪忧?可能是想多了!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 来源:代码湾 Java发行二十多年来,尤其是在战胜C和C++成为最受程序员喜欢的编程语言之后,一直都是开发者的宠儿. 虽然斯 ...

  8. [Bzoj1014][JSOI2008]火星人prefix(无旋Treap&hash)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1014 因为涉及到增加和修改,所以后缀数组就被pass掉了,想到的就是平衡树维护hash值 ...

  9. hive 取排行第二的工资

    CREATE TABLE employee( id INT , salary INT ); INSERT INTO employee , UNION ALL , UNION ALL ,; SELECT ...

  10. 矩阵快速幂(queue递推)

    http://acm.hdu.edu.cn/showproblem.php?pid=2604 Queuing Time Limit: 10000/5000 MS (Java/Others)    Me ...