如何在这里使用XPathContaines()?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (32)

我正在尝试学习XPath。我查看了这里的其他CONSE()示例,但是没有使用AND操作符。我不能让它起作用:

//ul[@class='featureList' and contains(li, 'Model')]

关于:

...
<ul class="featureList">

<li><b>Type:</b> Clip Fan</li><li><b>Feature:</b> Air Moved: 65 ft.
    Amps: 1.1
    Clip: Grips any surface up to 1.63"
    Plug: 3 prong grounded plug on heavy duty model
    Usage: Garage, Workshop, Dorm, Work-out room, Deck, Office & more.</li><li><b>Speed Setting:</b> 2 speeds</li><li><b>Color:</b> Black</li><li><b>Power Consumption:</b> 62 W</li><li><b>Height:</b> 14.5"</li><li><b>Width:</b> Grill Diameter: 9.5"</li><li><b>Length:</b> 11.5"</li>

<li><b>Model #: </b>CR1-0081-06</li>
<li><b>Item #: </b>N82E16896817007</li>
<li><b>Return Policy: </b></li>
</ul>
...
提问于
用户回答回答于

你只看第一个li子查询,而不是在查询中查找任何li子元素,该元素可能包含文本,'Model'

//ul[@class='featureList' and ./li[contains(.,'Model')]]

此查询将为提供具有classfeatureList有一个或多个li包含文本的孩子,'Model'

用户回答回答于

以下是方法不起作用的快速解释。这是:

//ul[@class='featureList' and contains(li, 'Model')]

遇到contains()函数(或XPath中的任何其他字符串函数)。

第一个参数应该是字符串。如果你给它一个节点列表(给它“li“这样做),必须进行到字符串的转换。但此转换仅针对列表中的第一个节点完成。

在您的例子中,列表中的第一个节点是<li><b>Type:</b> Clip Fan</li>(转换为字符串:“Type: Clip Fan“)这意味着:

//ul[@class='featureList' and contains(li, 'Type')]

扫码关注云+社区