2010-04-22 71 views
15

我不知道爲什麼,下面的查詢不起作用:XPath查詢選擇<a>標籤的所有HREF屬性,class屬性等於指定的字符串

//a/@href[@class='specified_string'] 
+2

由於類屬性可能包含以空格分隔的多個類名,所以您可能實際上想要:'// a [contains(concat('',normalize-space(@class) ,''),'some_class_name')]/@ href' – singpolyma 2011-04-29 20:15:25

+1

@singpolyma:好點。只是一個挑剔的問題:它是''some_class_name''(帶有空格),* not *''some_class_name''。 – kmkaplan 2012-04-25 09:31:12

回答

39

一輪嘗試用另一種方式:

//a[@class='specified_string']/@href 

畢竟,class<a>元素的屬性,而不是href屬性的屬性。

+0

是的我認爲它的工作原理,但問題是,查詢返回屬性,我想檢索屬性的值。我用Java編寫它,它返回了長度爲2的NodeList。當我嘗試打印出來時,它只打印兩個xml頭文件: <?xml version =「1.0」encoding =「UTF-8」?> ?xml version =「1.0」encoding =「UTF-8」?> 二,只有兩個鏈接,查詢將匹配,所以它似乎工作。但我想要得到這個hrefs的價值。怎麼做? – l245c4l 2010-04-22 14:51:47

+1

'NodeList'應該包含表示'href'屬性的'Node'列表。所以在這些節點上運行'getNodeValue()'應該給你'href'屬性'值。 – ndim 2010-04-22 15:00:14

+0

這不適用於我的情況,雖然我認爲它是完全正確的。我的Chrome可以使用'// @ [@ name =「topic」]來提取正確的元素。但'// @ [@ name =「topic」]/@ href'返回[,,,,]的列表,就好像沒有href屬性一樣。這是一個「一個元素」作爲例子:XXX Skywalker326 2016-07-06 01:58:03

1

你基本上說你正在尋找一個名爲href的屬性,它的屬性(這是錯誤)class應該等於specified_string

但是您需要查找元素a的屬性href,其屬性classspecified_string

(NDIM的答案重疊礦)

5

的屬性不能有屬性。只有元素可以具有屬性。

原始XPath表達式:

//a/@href[@class='specified_string'] 

選擇任何href任何a元素的屬性,使得href屬性具有屬性class,其值是'specified_string'

你想要的是

//a[@class='specified_string']/@href 

那就是:有class屬性附加傷害值爲'specified_string'任何a元素的href屬性。

0

錨標記中沒有類屬性我只有href。它使用//*[@href='value']進行標識,但//*a[@href='value']不起作用

相關問題