2014-01-15 187 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'將無法​​正常工作。

相關問題