几个不同的关键XPath概念
几个不同的关键XPath概念......
绝对vs相对XPath(/
vs .
)
/
引入绝对位置路径,从文档的根开始。.
从上下文节点开始引入相对位置路径。
命名元素vs任何元素(ename
vs *
)
/ename
选择一个ename
根元素./ename
选择ename
当前节点的所有子元素。/*
选择根元素,无论名称如何。./*
或者*
选择上下文节点的所有子元素,而不管名称。
后代或自我轴(//*
)
//ename
选择ename
文档中的所有元素。.//ename
选择ename
上下文节点或其下的所有元素。//*
选择文档中的所有元素,无论名称如何。.//*
选择上下文节点处或下方的所有元素,无论名称如何。
考虑到这些概念,以下是您具体问题的答案......
.//*[@id='Passwd']
表示选择当前上下文节点或其下具有id
属性值等于的 所有元素'Passwd'
。//child::input[@type='password']
可以简化为,//input[@type='password']
并且意味着选择input
文档中type
属性值等于的所有元素'password'
。
/AAA/BBB/following-sibling::* 取/AAA/BBB节点的之后的所有同级节点
总共有八个轴关键字,parent,child,ancestor祖先,descendant后裔,following,following-sibling兄弟姐妹,preceding,preceding-sibling。具体含义如下:
parent::div 上层父节点,你那叫div的亲生爸爸,最多有一个;
child::div 下层所有子节点,你的所有亲儿子中叫div的;
ancestor::div 上面所有直系节点,是你亲生爸爸或者你亲爹或者你亲爹的爸爸中叫div的;
descendant::div 下面所有节点,你的后代中叫div的,不包括你弟弟的后代;
following::div 自你以下页面中所有节点叫div的;
following-sibling::div 同层下节点,你所有的亲弟弟中叫div的;
preceding::div 同层上节点,你所有的亲哥哥以及他们的后代中叫div的;
preceding-sibling::div 同层上节点,你所有的亲哥哥中叫div的;
假设有这么一段html:
<div class="post-content">
<h1>Title</h1>
<p>Subtitle</p>
<img src="a.jpg">
<div>
<a href="example.html">Goto</a>
</div>
Bare text
<br>
<!-- this is html comment -->
<p>Bottom</p>
</div>
1 child::*
节点的所有子元素,如//div[@class="post-content"]/*
,结果:
<h1>Title</h1>
<p>Subtitle</p>
<img src="a.jpg">
<div>
<a href="example.html">Goto</a>
</div>
<br>
<p>Bottom</p>
可以看到,这里只选择了有标签名的节点,不在标签内的Bare text
和注释都被过滤了。
2 child::text()
节点的所有文本,如//div[@class="post-content"]/text()
,结果:
Bare text
3 child::node()
节点下的所有内容,不论是标签还是文本还是其他,//div[@class="post-content"]/node()
,结果:
<h1>Title</h1>
<p>Subtitle</p>
<img src="a.jpg">
<div>
<a href="example.html">Goto</a>
</div>
Bare text
<br>
<!-- this is html comment -->
<p>Bottom</p>
原样输出了其下的所有内容。
参考:
http://www.imooc.com/wenda/detail/579577
https://www.cnblogs.com/zhaozhan/archive/2009/09/10/1564332.html
https://blog.csdn.net/hb5cn/article/details/84937449
https://www.cnblogs.com/wangyi0419/p/11638652.html
https://www.awaimai.com/2726.html
几个不同的关键XPath概念的更多相关文章
- <二>面向对象分析之几个关键的概念
一:建模 --->建模,是指通过对[客观事物]建立一种抽象的方法用以表征事物并获得对事物本身的理解.同时把这种理解概念化,将这些逻辑概念组织起来,构成一种对所观察对象的内部结构和工 ...
- Drools Fusion (CEP) Example 和 关键概念
Drools Fusion (Complex Event Processing) 是Drools对于复杂事件处理的模块, 与它功能相似的是Esper, 两者都可以提供基于时间跨度和滑动窗口的事件处理, ...
- [一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念
本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程? java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的 ...
- XML中的XPATH和DTD
大家好,乐字节小乐又来了,上次给大家说道的是XML解析,这次接着讲述XML文档中的语言:XPATH.DTD 一.先来说说XPATH 1.XPATH 概念 XPath 是一门在 XML 文档中查找信息的 ...
- CNN核心概念理解
卷积神经网络 (Convolutional Neural Networks,简称CNN),是一种经典的神经网络算法.由于在图像识别领域取得的良好效果,随着人工智能的火热,它也受到越来越多的关注.CNN ...
- Java8 新特性 Lambda & Stream API
目录 Lambda & Stream API 1 Lambda表达式 1.1 为什么要使用lambda表达式 1.2 Lambda表达式语法 1.3 函数式接口 1.3.1 什么是函数式接口? ...
- 打造企业自己代码规范IDEA插件(中)
一些基本概念 在开始独立研发公司自己的代码规范检查规则之前,先介绍一些相关的基本概念.阿里巴巴代码规范很多规则其实都是基于开源框架PMD进行的研发.PMD用官方的话语介绍来说:PMD是一个源代码分析器 ...
- 如何用 MEF 扩展应用程序
最近在写一篇关于如何扩展 Visual Studio 编辑器的文章时,用到了 MEF,因此打算写一篇文章提一下这个技术点.本篇文章并不打算详细介绍 MEF,只是一个最简单的入门,相信您在阅读本篇文章后 ...
- EA方法论
1 EA的定义 Enterprise Architecture,企业架构,简称EA.根据开放群组的业务领导层IT架构指引:“有效的企业架构(Enterprise Architecture,EA)对企业 ...
随机推荐
- 坦克大战--Java类型
写在前面 Java编译器下载教程(真的良心):https://blog.csdn.net/Haidaiya/article/details/81230636 本项目为本人独自制作,请各位尊 ...
- dede按照权重排序dede:list和得的:arclist
dede:list 的方法 1.找到"根目录\include\arc.listview.class.php"文件. 2.修改代码:在文件第727行处添加按weight排序判断代码( ...
- 【图像处理 】 一、OSTU分割法
图像中像素的灰度值小于阈值T的像素个数记作N0,像素灰度大于阈值T的像素个数记作N1,则有: 图像大小:M*N T为二值化的阈值: N0为灰度小于T的像素的个数,N0的平均灰度为μ0 N1 为灰度大于 ...
- ef core many to many
https://stackoverflow.com/questions/46184678/fluent-api-many-to-many-in-entity-framework-core/461847 ...
- js之数据类型(对象类型——单体内置对象——Math)
Math是一个内置对象,它具有数学常数和函数的属性和方法.Math对象用于执行数学任务,和其它对象不同,Math只是一个静态对象并没有Math()构造函数,实际上,Math()只是一个由js设置的对象 ...
- python之atexit模块的使用
python atexit 模块定义了一个 register 函数,用于在 python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作. atexit 按 ...
- Marketing Cloud demo环境和API使用方法说明
version 1.0 作者:Wang Jerry 更多问题请联系我 demo 系统url:https:/jerry.hybris.com/sap/bc/ui5_ui5/ui2/ushell/shel ...
- axios替换jquery的ajax
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script> <scr ...
- Delphi 10.3.3最新消息
有朋友说,已经开始内测,预计10月末发版,按最新的路线图,此版本支持iOS 13及Android 64位. 2019-11-18,今天,下载及注册机都来了,快下载安装,试用吧. 需要的话加入QQ群20 ...
- CentOS7 PHP增加连接Sqlserver扩展
扩展插件下载地址 https://github.com/Microsoft/msphpsql/tags 本机PHP版本7.2,非线程安全 https://github.com/microsoft/ms ...