XPath表达式

什么是XPath

XPath:路径表达式

作用:在DOM解析XML时,通过XPath表达让解析更加简单

XPath表达式分类

  1. 绝对路径
  2. 相对路径
  3. 全文搜索
  4. 属性查找

什么是Node对象

DOM树中的每个节点就是Node
在这里插入图片描述

dom4j中与XPath相关的方法

注:使用XPath需要另外导入 jaxen-1.1.2.jar包 在这里插入图片描述

Node对象的方法功能说明
Node selectSingleNode(String xpath)通过xpath得到一个节点
List selectNodes(String xpath)通过xpath得到一组节点

XPath:绝对路径和相对路径

目标

  1. 学习XPath绝对路径的使用
  2. 学习XPath相对路径的使用

绝对路径语法

在这里插入图片描述

绝对路径示例

需求

采用绝对路径获取从根节点开始逐层的查找/contactList/contact/name 节点列表并打印信息

步骤

  1. 创建 XML 解析器,读取 XML 文档并获得Document对象
  2. 定义 Xpath 表达式:/contactList/contact/name
  3. 调用Document对象的selectNodes()方法执行Xpath获得节点集合
  4. 遍历输出每个节点

代码

public class Demo7Xpath {private Document document;//在每个测试方法之前执行的方法@Beforepublic void init() throws DocumentException {//1. 得到SaxReaderSAXReader reader = new SAXReader();//2. 得到文档对象document = reader.read(Demo7Xpath.class.getResourceAsStream("/Contact.xml"));}/**使用绝对路径*/@Testpublic void testAbsolute() {String xpath = "/contactList/contact/name";//得到所有name元素List<Node> nodeList = document.selectNodes(xpath);for (Node node : nodeList) {System.out.println(node.getText());}}
}

相对路径的语法

在这里插入图片描述

相对路径的示例

需求

  1. 先采用绝对路径获取 contactList 节点
  2. 再采用相对路径获取下一级contact 节点的name子节点并打印信息。

步骤

  1. 定义 Xpath 表达式:/contactList
  2. 调用Document对象的 selectSingleNode 方法执行Xpath获得根节点对象
  3. 通过根节点对象调用selectNodes方法执行相对路径表达式:./contact/name
  4. 打印输出所有的节点

代码

/**使用相对路径*/
@Test
public void testRelative() {//通过绝对路径得到/contactListNode node = document.selectSingleNode("/contactList");//通过相对路径得到nameNode nameNode = node.selectSingleNode("./contact/name");System.out.println(nameNode.getText());
}

XPath:全文搜索和属性查找

目标

  1. 学习XPath全文搜索的使用

  2. 学习XPath属性查找的使用

在这里插入图片描述

举例

举例说明
//contact找contact元素,无论元素在哪里
//contact/name找contact,无论在哪一级,但name一定是contact的子节点
//contact//namecontact无论在哪一种,name只要是contact的子孙元素都可以找到

全文搜索示例

需求

直接全文搜索所有的 name元素并打印

步骤

  1. 创建Xpath表达式 //name
  2. 使用selectNodes()方法查询所有的name节点

代码

/**全文搜索*/
@Test
public void testGlobalSearch() {List<Node> nodes = document.selectNodes("//name");for (Node node : nodes) {System.out.println(node.getText());}
}

属性查找语法

在这里插入图片描述

属性查找的示例

  1. 查找所有id属性节点
  2. 查找包括id属性的contact元素
  3. 查找包括id属性且属性名为的contact元素

步骤

  1. 创建Xpath表达式
  2. 使用selectNodes()方法查询所有的节点

代码

/**属性查找*/
@Test
public void testAttributeFind() {//1. 查找所有id属性节点/*List<Node> nodes = document.selectNodes("//@id");//是属性对象Attributefor (Node node : nodes) {//输出属性值Attribute a = (Attribute) node;System.out.println("属性值:" + a.getValue());}*///2. 查找包括id属性的contact元素/*List<Node> nodeList = document.selectNodes("//contact[@id]");for (Node node : nodeList) {System.out.println(node.getName());}*///3. 查找包括id属性且属性名为的contact元素Node node = document.selectSingleNode("//contact[@id=2]");System.out.println(node.getName());
}

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

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

相关文章

最详细MySQL的安装与介绍Windows

数据库的安装&#xff1a; 打开下载的mysql安装⽂件双击解压缩&#xff0c;运⾏“mysql-5.5.40-win32.msi”。 选择安装类型&#xff0c;有“Typical&#xff08;默认&#xff09;”、“Complete&#xff08;完全&#xff09;”、“Custom&#xff08;⽤户⾃定义&#xff09;”…

读懂基础机器学习算法

本篇内容主要是面向机器学习初学者&#xff0c;介绍常见的机器学习算法&#xff0c;当然&#xff0c;欢迎同行交流。 哲学要回答的基本问题是从哪里来、我是谁、到哪里去&#xff0c;寻找答案的过程或许可以借鉴机器学习的套路&#xff1a;组织数据->挖掘知识->预测未来。…

在c语言中有函数leapyear定义如下,职业教育概论——职业教育的发展历史超星尔雅答案题库...

职业职业展历有时候,文学造诣高的中国诗歌翻译者在用词华丽方面超过莎士比亚。有int型变量x&#xff0c;教育教育i&#xff0c;j&#xff0c;k&#xff0c;则表达式x(i5,j6,k7)的值为( )从数据表student中查询张姓的所有学生&#xff0c;概论正确的SQL语句是( )史超世界上第一个…

tomcat安装启动配置

服务器&#xff1a; 服务器的概念非常的广泛&#xff0c;它可以指代一台特殊的计算机&#xff08;相比普通计算机运行更快、负载更高、价格更贵&#xff09;&#xff0c;也可以指代用于部署网站的应用。我们这里说的服务器&#xff0c;其实是web服务器&#xff0c;或者应用服务…

JS在页面限制checkbox最大复选数

应该是挺简单的代码, 记录一下分享. 首先最直接的想法就是使用循环, 用局部变量记录已选的checkbox, 达到最大值就将余下的checkbox都禁止选择, 例如以下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""> <html xmlns"…

c语言 二维数组 文库,c语言二维数组练习题

c语言二维数组练习题 (3页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;19.90 积分完成下列程序代码完成下列程序代码1、 将二维数组(5 行 5 列)的右上半部分置零。 即&#xff1a;1234510000678910…

android陀螺仪轨迹,陀螺仪轨迹法长距离管道测量精度实测分析

陀螺仪轨迹法长距离管道测量精度实测分析陀螺仪轨迹法用于非开挖管道的精准坐标与位置测量已被电力与燃气等行业逐步了解与接受&#xff0c;近两年不断被引入到城市地下管线探测及电力与燃气管道验收标准中。由于管道埋于地下往往不能眼见为实&#xff0c;作为一种新的测量方式…

Spring IOC详解与配置

Spring&#xff1a; 框架&#xff1a; 具有一定功能的半成品软件&#xff0c;基于框架会节省开发成本 框架作用&#xff1a; 提高开发效率、复用性、编写规范、节约维护成本、解耦底层实现原理 Spring&#xff1a; Spring是分层的JavaSE/EE应用full-stack轻量级开源框架Sprin…

android8.0的蓝牙版本,android o 新特性详解 安卓8.0蓝牙音频增强以及更加可爱的表情包...

android 8.0什么时候推出&#xff1f;有哪些新特色&#xff1f;很多安卓用户非常想知道答案吧&#xff01;不用着急&#xff0c;下面是大麦子小编整理出来的安卓8.0新特性详解&#xff0c;希望可以帮到大家。有媒体近日曝光了有关谷歌Pixel XL 2手机会首发Android 8.0系统。现在…

DOM初级篇

DOM是什么、作用、与javascript&#xff1f; DOM是对HTML文档的访问和操作&#xff0c;对文档的增删改查。 DOM相当于是javascript一个类&#xff0c;这个类中提供了多种操作HTML的方法&#xff0c;也可以说DOM是依附在JavaScript上进行操作的。 一、标签的查找命令&#xff1b…

vs2019开发android应用,VS 2019开发APP(一)界面和代码

1.界面在Resources>layout>目录下的*.xml文件就是界面文件2.关联界面接下来&#xff0c;通过将支持代码插入到 MainActivity 类中来添加代码以关联用户界面。在 MainActivity 类中找到 OnCreate 方法&#xff0c;在其中添加关联按钮代码如下&#xff1a;protected overri…

oracle 数据库字段html显示正常text显示不全,layui表格字段表格显示不全(自适应)...

本文将为您描述layui表格字段表格显示不全(自适应),具体操作方法:好记性不如烂笔头。本来就是没什么好记得东西&#xff0c;下次再用时已经想不起来了。问题如下&#x1f41f;使用layui表格&#xff0c;表格字段显示不全&#xff0c;如果超出分配的位置&#xff0c;就会显示省略…

使用 VSCode 编写 .NET Core 项目之初体验

注&#xff1a;本文在根据 微软官方文档指导下&#xff0c;根据自己的学习中整理&#xff0c;并不完全照搬文档&#xff0c;但也大体和文档学习路线相似&#xff0c;主要为记录学习过程。 官方学习地址&#xff1a; https://code.visualstudio.com/docs/other/dotnet https://d…

html模板安装到织梦,织梦网站安装教程 织梦模板通用安装图文教程

织梦模版怎么安装使用呢 下面就把我的经验分享给大家解压文件上传到服务器指定根目录输入主域名访问“例如&#xff1a;//www.jb51.net/install”步骤1&#xff1a;勾选同意协议&#xff0c;点击继续按钮。步骤2&#xff1a;检查系统环境和文件权限&#xff0c;确定权限正确才能…

金乡高考成绩查询2021,金乡一中举行2021届高三年级一模成绩分析暨表彰大会!现场颁奖...

集思广益查缺补漏&#xff0c;全力以赴保驾护航。为增强备考紧迫性&#xff0c;提高备考有效性&#xff0c;激发师生积极性&#xff0c;2021年3月22日晚&#xff0c;山东省金乡一中2021届高三年级一模成绩分析暨表彰大会&#xff0c;在文峰楼二楼报告厅召开&#xff0c;本次会议…

匿名类

一、匿名类&#xff1a;[ C# 3.0/.NET 3.x 新增特性 ] 1.1 不好意思&#xff0c;我匿了 在开发中&#xff0c;我们有时会像下面的代码一样声明一个匿名类&#xff1a;可以看出&#xff0c;在匿名类的语法中并没有为其命名&#xff0c;而是直接的一个new { }就完事了。从外部看来…

MySQL— 进阶

目录 一、视图二、触发器三、函数四、存储过程五、事务 一、视图 视图是一个虚拟表&#xff08;非真实存在&#xff09;&#xff0c;其本质是【根据SQL语句获取动态的数据集&#xff0c;并为其命名】&#xff0c;用户使用时只需使用【名称】即可获取结果集&#xff0c;并可以将…

HTML中del标记是什么意思,HTML del标记

本文概述HTML 标记用于表示已从文档中删除/删除的文本范围。它用作已删除内容的标记。浏览器通常通过在已删除的文本上打一行来呈现它, 尽管可以使用CSS属性更改它。注意&#xff1a;要标识已删除的文本和插入的文本, 请使用带有的标记, 该标记将在文档中显示已删除和插入的文本…

进制原码反码补码

进制&#xff1a; 概念&#xff1a; 进制&#xff1a;指进位制&#xff0c;是人们规定的一种进位方式&#xff0c;表示某一位置的数看&#xff0c;运算时是逢*进一位。十进制是逢十进一&#xff0c;二进制是逢二进一。以此类推。学习的目的就是为了数据运算过程理解的更加深刻…

什么是位运算符

位运算符&#xff1a; 概念&#xff1a; 位运算符指的是二进制位的运算&#xff0c;先将十进制数转成二进制后再进行运算。 在二进制位运算中&#xff0c;1表示true&#xff0c;0表示false。 <<有符号左移运算&#xff1a;&#xff0c;二进制位向左移动, 左边符号位丢弃…