2012-09-03 139 views
0

鉴于此HTML片段水豚用嵌套标签

<ul> 
    <li>Product 1<span><a href="#">Remove</a></span></li> 
    <li>Product 2<span><a href="#">Remove</a></span></li> 
</ul> 

什么是干净的方式来获得产品列表作为一个数组?:

['Product 1', 'Product 2'] 

我想li元素的文本,但不的span标签。


更新:

这工作:

all('ul li').map{|e| e.native.children.first.text} 

但它可以被改进?我并不热衷于使用'本地',因为它可能不适用于所有水豚司机。

回答

1

这应做到:

all(:xpath, '//ul/li/text()[1]').map(&:text) 
+0

的确如此 - 它似乎你甚至都不需要输入[1]的一部分。似乎这是您需要Xpath而不是CSS查询的强大功能的情况之一。 –

+0

如果你有任何额外的空白或换行标签周围的链接或span标签,你可能需要[1]。 –

+0

[1]是什么意思? –