只有当并行元素满足xpath1.0条件时,才能获取兄弟元素文本

时间:2013-12-18 13:48:10

标签: html xpath

目标是获取名为Nick的用户的代码,他的标题是先生xpath1.0。

<span class="user">
  <span class="master">
    <span class="user-title" title="Mr">
      <span class="name">Nick</span>
    </span>
    <span class="user-info">
      <span class="code">A</span>
    </span>
  </span>
</span>
<span class="user">
  <span class="master">
    <span class="user-title" title="Mr">
      <span class="name">Bob</span>
    </span>
    <span class="user-info">
      <span class="code">B</span>
    </span>
  </span>
</span>

我会将它分成几个步骤来理解xpath在这种情况下的工作原理。

//span[contains(., 'Nick'])可以获取该节点,但是如何获取下一个节点中的人员代码信息?

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

//span
    [@class='user']
    [.//span[@class='name']='Nick']
//span[@class='code']
/text()

基本上这说:

  • 查找包含名称范围的文本Nick
  • 的用户范围
  • 在该用户范围内,找到代码范围
  • 对于代码范围,请返回文本

或者,您可以直接导航到兄弟元素。但是,它不具有可读性:

//span[.='Nick']/../following-sibling::*[1]/span/text()

这就是用文字尼克查找范围。从那里,转到父(用户标题范围)。然后转到下一个兄弟(用户信息范围)。然后在那里得到跨度,这是代码跨度。