Xpath的使用

一、xpath介绍

XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。

  • XPath 使用路径表达式在 XML 文档中进行导航
  • XPath 包含一个标准函数库
  • XPath 是 XSLT 中的主要元素
  • XPath 是一个 W3C 标准

二 、xpath简单语法

表达式描述
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点
选取当前节点的父节点
@选取当前节点的属性值
这个表达式用于在多个xpath语句中使用,互不影响
XML 实例文档

我们将在下面的例子中使用这个 XML 文档。

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book>
  <title lang="one">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="two">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>
表达式描述
//book匹配所有的book节点(不论在哪个位置)
//book/title匹配所有的book节点下的title节点
//book/title/text()匹配book节点下的title节点的文本内容
//book[1]匹配第一个book节点
//book/title[@lang=‘one’]匹配book节点下的title中lang属性为’one’的节点
//title/…/price匹配所有title父节点的price节点

三 、xpath高级进阶

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>xpath</title>
</head>
<body>
    div price="99.8">
    <div>
        <ul>
            <li>时间</li>
            <li>地点</li>
            <li>任务</li>
        </ul>
    </div>
    <div id='testid' data-h="first">
        <h2>这里是个小标题</h2>
        <ol>
            <li data="one">1</li>
            <li data="two">2</li>
            <li data="three">3</li>
        </ol>
        <ul>
            <li code="84">84</li>
            <li code="104">104</li>
            <li code="223">223</li>
        </ul>
    </div>
    <div>
        <h3>这里是H3的内容
            <a href="http://www.baidu.com">百度一下</a>
            <ul>
                <li>test1</li>
                <li>test2</li>
            </ul>
        </h3>
    </div>
    <div id="go">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
        </ul>
    </div>
</div>
</body>
</html>
表达式描述
//div[not(@id=“go”)]匹配所有div节点且含有的属性不包含id=“go”
//ul//li[contains(string(),‘9’)]]匹配所有ul下的li节点且文本内容中包含’9’
注释:contains关键字表示文本包含,
string()表示字符串,
'9’为包含的文本内容
//div[@id=“go”]/ul//li[3]/following-sibling::li匹配id='go’的div节点下的ul节点下的第三个li节点下的所有li兄弟节点
//ul//li[position()>5]匹配ul节点下所有li节点,且不选择前五个节点
//div/attribute::id匹配所有div节点的所有id属性
//div[@id]/self::div[@data-h]/attribute:😗匹配带id属性值当前节点的div中包含data-h属性的标签的所有属性值
//div[position()>1][@data-h=“first”]/ul//li[1]/following-sibling::li/text()匹配除第一个div的所有div且属性data-h的值为’first’节点下的ul节点下的第一个li节点的所有兄弟节点的值
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像豆芽一样优秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值