【Java】Java核心 76:XML解析 Dom4j (下)

news2024/11/20 22:38:27

文章目录

      • **3** **使用xpath技术结合DOM4J技术读取xml文件(了解)**
        • 1.概念介绍
        • 2.XPath使用步骤
        • 3.XPath语法(了解)
          • 3.1全文搜索路径表达式方式 掌握


在这里插入图片描述

3 使用xpath技术结合DOM4J技术读取xml文件(了解)

1.概念介绍

问题:通过上面的案例我们发现有个小问题.就是获取标签的过程太过繁琐。我们需要一层一层的去获取。假设xml嵌套了50层的话,对于我们开发者来说是非常繁琐的。所以我们希望应该有这样的技术,一下子直接就能获取我们所需要的标签对象。这就是我们接下来需要学习的xpath技术。

xpath技术 也是 W3C 组织制定的快速获取 xml文件中某个标签的技术。

xpath其实就像在文件系统中定位文件,所以我们学习xpath主要学习xpath的路径表达式。

2.XPath使用步骤

步骤1:导入jar包(dom4j-1.6.1.jar(dom4j核心包)和jaxen-1.1-beta-6.jar(xpath依赖的包))

在这里插入图片描述


步骤2:通过dom4j的SaxReader获取Document对象

在这里插入图片描述

步骤3:使用document常用的api结合xpath的语法完成选取XML文档元素节点进行解析操作。

说明:

  • Node叫做节点,DOM里面所有的类型都是Node的子类
    • 比如Document Element Attribute 都是 Node的子类
  • Node中的两个方法可以使用XPath:
方法作用
List selectNodes(“表达式”)获取符合表达式的元素集合
Element selectSingleNode(“表达式”)获取符合表达式的唯一元素

3.XPath语法(了解)

在学习如何使用XPath之前,我们先将课后资料中的tianqi.xml放到项目根目录下,然后我们在演示如何使用xpath。

3.1全文搜索路径表达式方式 掌握
  • 代表无论中间有多少层,直接获取所有子元素中满足条件的元素
    • 一个“/”符号,代表逐级写路径
    • 2个“//”符号,不用逐级写路径,可以直接选取到对应的节点,是全文搜索匹配的不需要按照逐层级 重点
  • 需求1:获取天气预报里的所有湿度,不论有多少层
  • 需求2:获取广州里面的3个最高温度
//代表无论中间有多少层,直接获取所有子元素中满足条件的元素
    @Test
    public void demo03() throws Exception {
        //全文搜索    //
        SAXReader reader = new SAXReader();
        Document document = reader.read("tianqi.xml");
        //获取天气预报里的所有湿度,不论有多少层
        List<Node> list = document.selectNodes("//湿度");

        //遍历打印
        for (Node node : list) {
            System.out.println(node.getText());
        }
        System.out.println("--------------");

        //获取广州里面的3个最高温度
        List<Node> list1 = document.selectNodes("/天气预报/广州//最高温度");
        for (Node node : list1) {
            System.out.println(node.getText());
        }
    }


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693872.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python程序设计期末作品完整版|代码和程序设计文档

python程序设计作品&#xff0c;希望对您有帮助&#xff0c;希望您的一键三连&#xff01; 程序设计报告 1.爬取数据的意义 富豪榜的出现&#xff0c;体现了人们思想的变化:由保守藏富向正向面对财富的转变;由保守向文明开放(–说明了大众媒体的进步与教育的普及等思想工具的极…

会网络爬虫能干什么?

网络爬虫是一种自动化程序&#xff0c;用于浏览互联网并从网页中获取数据。它可以执行以下任务&#xff1a; 数据采集&#xff1a;网络爬虫可以访问网站&#xff0c;并从中提取所需的数据&#xff0c;例如新闻文章、产品信息、用户评论等。这些数据可以用于各种目的&#xff0…

【数据结构导论】第 2 章:线性表

目录 一、线性表的基本概念 &#xff08;1&#xff09;线性表的基本概念 &#xff08;2&#xff09;线性表的逻辑结构特征 &#xff08;3&#xff09;线性表的基本运算 二、线性表的顺序存储 &#xff08;1&#xff09;线性表顺序存储的类型定义 &#xff08;2&…

PHP 旅游网站系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 旅游网站系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据库为 mysql5.0&#xff0c;使用php语言开发。 代码…

Spark15-16

15. SparkOnYarn 15.1 Hadoop YARN回顾 15.1.1 YARN 的基本设计思想 将Hadoop 1.0中JobTracker拆分成两个独立的服务,一个全局的资源管理器ResourceManager(RM)和每个应用独有的ApplicationMaster(AM).其中RM负责整个系统的资源管理和分配,而AM负责单个的应用程序的管理 15.…

【面试题22】PHP通过Redis和MySQL实现商品秒杀功能

文章目录 一、前言二、系统架构三、技术栈四、系统设计4.1 商品设计4.2 用户设计4.3 抢单设计4.5 并发控制4.5 获取用户购买记录代码4.7 扣减商品库存代码4.8 获取商品锁代码4.9 添加订单记录代码 总结 一、前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP面试专区。 计划将全…

element ui - el-table 设置表头背景颜色和字体颜色

element ui - el-table 设置表头背景颜色和字体颜色 场景代码效果 场景 在使用 elementui 中的 el-table 时&#xff0c;由于默认表格样式与设计稿不符&#xff0c;需要将表头的背景色和字体颜色设置为新颜色。 但是对 thead&#xff0c;thead tr&#xff0c;.el-table__cell…

go mod tidy 提示错误 go mod tidy -go=1.16 go mod tidy -go=1.17

错误概览 执行 go mod tidy 时&#xff0c;提示如下错误 > go mod tidy github.com/myrepo/myproj importsgo.k6.io/k6 importsgo.k6.io/k6/cmd importsgithub.com/fatih/color loaded from github.com/fatih/colorv1.12.0,but go 1.16 would select v1.13.0To upgrade to t…

通付盾发布WAAP白皮书,帮助企业应对数字化转型过程中日益高发的网络安全威胁

简介 企业数字化转型是数字经济发展的重要一环。面对企业数字化转型过程中的安全问题&#xff0c;WAAP白皮书将对攻击方式、攻击量、攻击来源、行业分布等维度对各类攻击进行详细解读&#xff0c;梳理传统Web应用防护能力的不足&#xff0c;分析日益增长的API防护&#xff0c;…

新手小白学JAVA_IDEA修改关键字和注释颜色

很多小白在刚刚使用IDEA的时候还不是很熟练 本文主要给大家提供一些使用的小技巧&#xff0c;希望能帮助到你 1.修改关键字的默认颜色 对于很多初学者而言&#xff0c;将Java的关键字设置成一个特殊的颜色有助于记忆 我们一起来试一试吧~ 2.修改注释的默认颜色 注释颜色默认都…

23JS14——Web APIs简介

文章目录 一、Web APIs和JS基础关联性1、JS组成2、基础阶段以及Web APIs阶段1、API2、Web APIs 二、API和Web APIs 目标&#xff1a; 1、Web APIs和JS基础关联性 2、API和Web APIs 一、Web APIs和JS基础关联性 1、JS组成 2、基础阶段以及Web APIs阶段 1、API 2、Web APIs 二…

elasticsearch7.17.3实现按terms传入内容排序,类似mysql中order by filed()的排序方式

现有一个需求&#xff0c;需要在elasticsearch中实现用terms筛选内容&#xff0c;并且按terms传入的内容顺序排列 类型于mysql中order by filed()的排序方式&#xff0c;具体实现如下 目录 一、需求二、整体思路三、es查询语句四、java生成es连接五、java调用es六、最终实现结果…

【数据结构】线性表——顺序表 链式表 单链表 双链表 循环链表 静态链表

文章目录 二 线性表1.定义与基本操作2.顺序表2.1 定义2.2 静态分配 3.链式表3.1 单链表3.1.1 定义3.1.2 建立1&#xff09;头插法建立单链表2&#xff09;尾插法建立单链表 3.1.3 插入3.1.4 删除3.1.5 查找1&#xff09;按序号查找结点2&#xff09;按值查找结点 * 单链表完整代…

【 云原生 kubernetes 】- 使用Filebeat采集k8s日志

文章目录 简介采集流程&#xff1a;镜像构建 Helm部署配置调整删除赘余部分更新Values挂载文件 主流程结果 ⚡️: 日志采集器Logstash其功能虽然强大&#xff0c;但是它依赖java、在数据量大的时候&#xff0c;Logstash进程会消耗过多的系统资源&#xff0c;这将严重影响业务系…

制作外网shell

安装配置环境 网址 https://www.ngrok.cc 支付两块钱之后&#xff0c;就可以免费使用服务器&#xff0c;进行隧道开通。远程端口就是服务器的端口&#xff0c;可以先随便写&#xff0c;等下会提示有哪一些可用端口 下载客户端&#xff0c;选择64位的版本&#xff08;跟kali一…

Lock接口介绍

1、 Synchronized (1) 多线程编程模板上 1) 第一步&#xff1a;创建资源类。 2) 第二步&#xff1a;创建操作方法。 3) 第三步&#xff1a;创建线程调用操作方法。 4&#xff09;原则&#xff1a;高内聚低耦合。 (2) 实现步骤 1&#xff09;创建资源类。 2&#xff09;资源类…

ubuntu下简单编译opencv

# 安装依赖&#xff0c;其中python-dev没有安装上没关系。 sudo apt install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libpng-dev libjpeg-dev libtiff5-dev libswscale-dev libjasper-dev libdc1394-22-dev libtiff-dev python-dev python-numpy libtb…

chatgpt赋能python:Python轨迹可视化:用数据讲故事

Python轨迹可视化&#xff1a;用数据讲故事 介绍 随着物联网、智能城市等领域的发展&#xff0c;越来越多的数据被收集下来并存储在数据库中。这些数据对于决策者来说是非常重要的&#xff0c;但是如何将这些数据进行展示和分析呢&#xff1f;这时候Python轨迹可视化就可以派…

java项目之后勤管理系统ssm源码+文档

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的后勤管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

【docker创建容器的坑】WSL启动nvidia-docker镜像:报错libnvidia-ml.so.1- file exists- unknown

可能得错误一&#xff1a; 今天使用docker创建容器的时候总是出错&#xff0c;最后锁定问题在“--gpus all”这里&#xff1a; 不加--gpu all可以运行&#xff0c;加入了--gpus all就出错&#xff1a; docker: Error response from daemon: failed to create task for conta…