我正在尋找一些關於如何完成的建議。我想一個解決方案只使用XPath:如何僅選擇Nokogiri的葉節點?
一個HTML例子:
<div>
<div>
<div>text div (leaf)</div>
<p>text paragraph (leaf)</p>
</div>
</div>
<p>text paragraph 2 (leaf)</p>
代碼:
doc = Nokogiri::HTML.fragment("- the html above -")
result = doc.xpath("*[not(child::*)]")
[#<Nokogiri::XML::Element:0x3febf50f9328 name="p" children=[#<Nokogiri::XML::Text:0x3febf519b718 "text paragraph 2 (leaf)">]>]
但這僅支持XPath給了我最後一個 「P」。我想要的就像一個平坦的行爲,只返回葉節點。
下面是計算器一些參考答案:
How to select all leaf nodes using XPath expression?
XPath - Get node with no child of specific type
感謝
你想要什麼值? –
文本上有(葉)的所有節點 – Luccas
@Luccas:你只想要文本,還是你想要包含元素?即你想'文本段落(葉)'還是'
文本段落(葉)
'?如果你只想要文本,你想單獨使用所有的文本節點,還是隻需要將所有文本作爲單個字符串進行拼接? – Borodin