如果上面div中的类中包含某些文本,我如何获取div的内容

时间:2017-08-16 22:18:09

标签: html xml xpath

<li class="amenities__item amenities__item--yes">
    <div class="amenities__icon amenities__icon--yes"></div>
    <div class="amenities__label">
      Parking
    </div>
  </li>

我想抓住文字&#34;停车&#34;但是,只有在它之前的div有单词&#34; yes&#34;在里面。

我一直在尝试各种变体:

//div[contains(class/following-sibling::text(), 'Yes')]

但似乎我需要以某种方式更具体。

1 个答案:

答案 0 :(得分:0)

这个XPath,

normalize-space(//div[contains(preceding-sibling::div[1]/@class, 'yes')])

将返回div的空格规范化字符串值,其前一个兄弟div的{​​{1}}属性值中包含yes。对于您发布的示例HTML,将是:

@class

如果您希望测试前面的Parking 等于div的字符串值,那么请使用此XPath:

Yes

更新以解决有关如何处理多个此类normalize-space(//div[preceding-sibling::div[1] = 'Yes']) 元素的评论问题

对于第一个XPath,您可以选择此类div元素的节点集(XPath 1.0)或序列(XPath 2.0+):

div

迭代结果节点集/序列的方式取决于托管XPath库的语言。在XPath中,如果你知道你想要的第二个//div[contains(preceding-sibling::div[1]/@class, 'yes')] ,你可以追加div

[2]