2017-10-09 93 views
0

我使用Ruby 2.4和Nokogiri。如何從不屬於另一個子元素的節點中提取文本?也就是說,如果我有節點如何提取不屬於子節點的文本?

<a>Text 1<b>Text 2</b></a> 

我想提取「文本1」而不是「文本2」。如果節點

<c>Hello</c> 

我可以簡單地調用

node.text 

但「node.text」不爲我上面描述的更復雜的情況下工作(這將同時返回「文本1」和「文本2」

回答

0

你可以這樣做:

doc.at('a').child.text 

doc.at('a').children[0].text 
2

您可以使用引入nokogiri的xpath選擇只得到父元素的文本:

doc = Nokogiri::HTML("<a>Text 1<b>Text 2</b></a>") 
doc.xpath("//a/text()").text 
# => "Text 1" 
+0

感謝。有什麼辦法可以概括這個嗎?我以元素爲例,但該節點並不總是被命名爲「a」。 – Dave

+1

@Dave:csexton寫的很容易推廣到其他元素。你能更具體地說明你的普遍關注嗎? – kjhughes

+0

如果我有一個類型爲「Nokogiri :: XML :: Element」的變量,「節點」,我如何提取不屬於子元素的文本? – Dave

相關問題