如何在xpath中获取具有相对属性的节点?

时间:2013-06-08 16:09:08

标签: xml xpath

大家好,我就是这样的3个div: div 1:

<div class="productbox-container first" style="float:left">
<div class="product">
<div class="product_image">
</div>
<div class="product_price">
</div>
</div>
</div>

div 2:

<div class="productbox-container" style="float:left">
<div class="product">
<div class="product_image">
</div>
<div class="product_price">
</div>
</div>
</div>

div 3:

<div class="productbox-container last" style="float:left">
<div class="product">
<div class="product_image">
</div>
<div class="product_price">
</div>
</div>
</div>
3 div中的每个内容都是相同的,唯一的区别在于classname,正常的方式我可以得到3个htmlnodecolection的节点,如下所示:

 HtmlNodeCollection htmlNodeCollection = document.DocumentNode.SelectNodes("//*[@class='productbox-container first']");
 HtmlNodeCollection htmlNodeCollection2 = document.DocumentNode.SelectNodes("//*[@class='productbox-container']");
 HtmlNodeCollection htmlNodeCollection3 = document.DocumentNode.SelectNodes("//*[@class='productbox-container last']");

无论如何都要获得1 HtmlNodeCollection?有点像:

 HtmlNodeCollection htmlNodeCollection3 = document.DocumentNode.SelectNodes("//*[@class='productbox-container'+*]");

使用*喜欢sql?谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

使用包含:

HtmlNodeCollection htmlNodeCollection3 = document.DocumentNode.SelectNodes("//*[contains(@class, 'productbox-container')]");

或更可靠:

HtmlNodeCollection htmlNodeCollection3 = document.DocumentNode.SelectNodes("//*[contains(concat(' ', @class, ' '), ' productbox-container ')]");