[英]Use Nokogiri to get all nodes in an element that contain a specific attribute name
我想使用Nokogiri來提取包含特定屬性名稱的元素中的所有節點。
例如,我想在下面的文檔中找到包含屬性“blah”的2個節點。
@doc = Nokogiri::HTML::DocumentFragment.parse <<-EOHTML
<body>
<h1 blah="afadf">Three's Company</h1>
<div>A love triangle.</div>
<b blah="adfadf">test test test</b>
</body>
EOHTML
我在這個網站上找到了這個建議(下面): http : //snippets.dzone.com/posts/show/7994 ,但它沒有返回上面例子中的2個節點。 它返回一個空數組。
# get elements with attribute:
elements = @doc.xpath("//*[@*[blah]]")
關於如何做到這一點的想法?
謝謝! 我在這里找到了這個
elements = @doc.xpath("//*[@*[blah]]")
這不是一個有用的XPath表達式。 它說給你所有具有屬性的元素,這些屬性具有名為'blah'的子元素。 由於屬性不能包含子元素,因此該XPath永遠不會返回任何內容。
當他們說時,DZone片段令人困惑
elements = @doc.xpath("//*[@*[attribute_name]]")
內部方括號不是文字的......它們表示你輸入了屬性名稱。 外方括號是字面的。 :-P
在@
之后,他們還有一個額外的*
。
你想要的是什么
elements = @doc.xpath("//*[@blah]")
這將為您提供具有名為“blah”屬性的所有元素。
您可以使用CSS選擇器:
elements = @doc.css "[blah]"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.