代码之家  ›  专栏  ›  技术社区  ›  JobProcessTask

如何读取此xpath表达式?

  •  3
  • JobProcessTask  · 技术社区  · 2 年前

    有人能解释一下如何在xpath中读取这个表达式吗
    /a/b[3]/preceding-sibling::*[1]/d/@id ?
    preceding-sibling::*[1] )

    <a>
          <b> 
                <c ref="a5">2000</c>
                <d id="a3">3</d>
                <d id="a4">4</d> 
                <d id="a5">a</d> 
                <d id="a6">b</d>
                 <f></f> 
          </b> 
    
          <b> 
                <c ref="a5">3000</c> 
                <f></f> 
                <d id="a7">7</d> 
                <d id="a8">8</d> 
                <d id="a9">9</d> 
          </b>
    
          <b> 
                <c ref="a6">4000</c>
                 <f></f> 
          </b> 
    </a>
    

    为什么返回以下输出:

    Attribute='id=a7'
    Attribute='id=a8'
    Attribute='id=a9'
    
    1 回复  |  直到 2 年前
        1
  •  3
  •   Jack Fleeting    2 年前

    在示例xml的上下文中,这没有多大意义,但它的意思是:

    /a/b[3]
    

    找到第三个 <b> 的子女 <a> <b> 在这种情况下。

    /preceding-sibling::*[1]
    

    <a> 紧接着(第一个) < 孩子,不管它的名字。在这种情况下,这个(第二个)孩子碰巧也是一个 <b> /a/b[2] ,但无论如何。

    /d
    

    查找 <d> 孩子们 < -第二节有3个 <b> . 最后

    /@id
    

    id 在这三个孩子中——这就是你获得输出的方式。