2017-10-09 97 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

相关问题