簡體   English   中英

使用Nokogiri獲取包含特定屬性名稱的元素中的所有節點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM