2014-01-15 240 views
0

我想选择具有属性类的节点,其中某些值没有指定标记。如何选择具有某些属性的XPath中的节点?

怎么办?

到目前为止,我有:

html.DocumentNode.SelectNodes("//[@class='value']"); 

但它不工作好,据我看到它。

例如,让我有这样的HTML代码:

<div> 
    <div class="value"></div> 
    <a class="value"></div> 
</div> 

那就需要给我回的2种元素的<div>里面,所以<div><a>。那可能吗?

+0

xpath文本在哪里? –

+0

“// [@ class ='value']”? – Tommz

+1

这不是通过https://stackoverflow.com/questions/14248063/xpath-to-select-element-with-attribute-value回答吗? – 48klocs

回答

2

如果要包括根节点,您可以使用descendant-or-self访问像这样:

descendant-or-self::*[@class='value'] 

消除-or-self如果你不想考虑根节点。更重要的是,星号是告诉XPath分析器返回一个节点集。

3

所以我相信你想要的东西正确的语法是这样的:

html.DocumentNode.SelectNodes("//*[@class='value']"); 

当你正在寻找的只是属性,你不需要[ ]因为你没有用元素提炼它。

+0

Nop,因为它需要返回节点。 – Tommz

+0

@Tommz,我想知道,坐在这里,请看我的编辑。 –

+1

叶普,现在是正确的,但我需要给希思正确的答案,因为他先回答正确:)但非常感谢。 – Tommz

1

因为你使用HTML类属性的工作在这里,我建议使用下列内容:

//*[contains(concat(' ', @class, ' '), ' value ')] 

注意周围的价值空间。这将确保您找到元素,即使他们有多个类。在这种情况下使用@class='value'将无法​​正常工作。

相关问题