• 几个不同的关键XPath概念


    几个不同的关键XPath概念......

    绝对vs相对XPath(/vs .

    • / 引入绝对位置路径,从文档的根开始。

    • . 从上下文节点开始引入相对位置路径。

    命名元素vs任何元素(enamevs *

    • /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。具体含义如下:

    1. parent::div 上层父节点,你那叫div的亲生爸爸,最多有一个;
    2. child::div 下层所有子节点,你的所有亲儿子中叫div的;
    3. ancestor::div 上面所有直系节点,是你亲生爸爸或者你亲爹或者你亲爹的爸爸中叫div的;
    4. descendant::div 下面所有节点,你的后代中叫div的,不包括你弟弟的后代;
    5. following::div 自你以下页面中所有节点叫div的;
    6. following-sibling::div 同层下节点,你所有的亲弟弟中叫div的;
    7. preceding::div 同层上节点,你所有的亲哥哥以及他们的后代中叫div的;
    8. 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

  • 相关阅读:
    Eclipse常用快捷键
    java中构造方法及其作用
    jsp的验证码实现
    request.getParameter()与request.setAttribute()的区别 (转载)
    HTML表单操作的记录
    Java Collection(转载)
    Java中StringBuffer类append方法的使用
    java中string.trim()函数的使用
    doGet与doPost的区别
    celery
  • 原文地址:https://www.cnblogs.com/pu369/p/11686826.html
Copyright © 2020-2023  润新知