XPath - 快速入门使用 - 配案例测试

x33g5p2x  于2022-02-12 转载在 其他  
字(3.1k)|赞(0)|评价(0)|浏览(246)

1. 在线测试 - 推荐的这个在线匹配网站的比较准确

https://www.toolnb.com/tools/xpath.html

2. 概述

作用: 用于定位查找XML的元素-很像前端的选择器不过只是改变了写法

概念 == 示例XML

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <h1>
            <span>你好</span>
        </h1>
        <a>链接</a>
        <a id="link">链接</a>
        <div>
            <h2>测试</h2>
        </div>
        <div>
            <span>fsdfds</span>
            <h1>佛挡杀佛多少分</h1>
        </div>
    </body>
</html>

节点1. (文档)根节点:如上面的:<html>2. 元素节点:如上面的:<body>、<title>等3. 属性节点:如上面的:charset='UTF-8' 则其属性节点的父节点是 <meta charset='UTF-8'>

3. 语法

3.1 基础语法概述

筛选器节点选取节点名:选取此节点的所有子节点 - 从根节点出发/:从根节点选取(取子节点)//:任意位置查找元素节点.:当前节点..:当前节点的父节点@:节点的属性筛选[]:筛选某位置(从1开始)节点以及符合属性的节点

运算符算术运算符:加减乘除取模(+、-、*、div、mod)比较运算符:=、!=、<、<=、>、>=逻辑运算符:or、and节点元素符:并集| == 如//book | //cd

3.2 测试应用

示例XML

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <h1>
            <span mark='mark1' num='5'>你好</span>
        </h1>
        <a>链接</a>
        <a id="link">链接</a>
        <div>
            <h2>测试</h2>
            <span mark='mark2'  num='10'>
                <h1>fdsfdsfd</h1>
            </span>
        </div>
        <div>
            <span  num='-1'>fsdfds</span>
            <h1 id=title>佛挡杀佛多少分</h1>
        </div>
    </body>
</html>
3.2.1 节点 - 从根节点找子节点(不可找孙子起点)

3.2.2 / - 初始起点 - 当前节点为标准

初始起点是未进入节点故找不到

路径问题,故只匹配到一个ie

3.2.3 // - 在当前节点范围内的任意位置

任意位置的h1节点

h1的父节点必须是div

限死在div范围内的h1

3.2.4 . - 当前节点

3.2.5 … - 当前节点的父节点

3.2.6 @属性名 - 属性节点选择

仅能获取属性名以及对应的属性值

获取属性节点所属于的父节点

3.2.7 [] - 节点筛选
3.2.7.1 [数字(从1开始)] - 位置筛选

找第二个元素

3.2.7.2 [@属性名运算符’属性值’] - 属性筛选

找含有属性mark=mark2的节点

找含有属性num且值大于1的节点

3.2.8 运算符使用
3.2.8.1 用于配合[]属性筛选 - 逻辑元素符、算术运算符

找出属性是num=5 或者 10 的span节点

找出属性是num=5的span节点

找出属性是num=5且mark=mark2的span节点

找出属性num的值大于0的span节点

3.2.8.2 结果集并集

找出属性num的值大于0的span节点 且 还有属性名id的a节点

3.2.9 内置函数的使用

示例XML

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <h1>
            <span mark='mark1' num='5'>X你好</span>
        </h1>
        <a>链接2</a>
        <a id="link">X链接</a>
        <div>
            <h2>测试</h2>
            <span mark='mark2'  num='10'>
                <h1>fdsfdsfd</h1>
            </span>
        </div>
        <div>
            <span  num='-1'>fsdfds</span>
            <h1 id=title>佛挡杀佛多少分</h1>
        </div>
    </body>
</html>

节点内容是【链接】的节点: //*[text()=‘链接’]

节点内容含有【链接】字眼的节点: //*[contains(text(),‘链接’)]

节点内容以【X】字眼开头的节点: //*[starts-with(text(),‘X’)]

节点的属性mark的值含有【mark】字眼的节点: //*[contains(@mark,‘mark’)]

相关文章