</div>
apple
<br>
banana
<br/>
watermelon
<br>
orange假设有上述情况,那么如何使用Xpath获取每个结果呢?必须使用某种类型的xpath。
我应该使用substring-after(following-sibling...)吗?
编辑:我正在使用Nokogiri解析器。
发布于 2009-09-28 03:59:27
当然,您可以使用"//br/text()",但这将返回<br>标记内的所有文本节点。但是,由于上面的内容不是格式良好的xml,我不确定您将如何对其使用xpath。正则表达式通常不适合html,但是有html (而不是xhtml)解析器可用。我犹豫要不要为ruby推荐一个,因为那不是我的领域,我只是在谷歌上搜索……
发布于 2009-09-28 13:48:59
尝试执行以下操作,以从尾随和前导空格中剥离的字符串数组形式获取<br>标记的所有文本同级:
require 'rubygems'
reguire 'nokogiri'
doc = Nokogiri::HTML(DATA)
fruits =
doc.xpath('//br/following-sibling::text()
| //br/preceding-sibling::text()').map do |fruit| fruit.to_s.strip end
puts fruits
__END__
</div>
apple
<br>
banana
<br/>
watermelon
<br>
orange这是你想要的吗?
发布于 2009-09-28 04:02:19
这里有几个问题:
<br>标记实际上并不包含文本,它们只是位于文本之间,因此这也将证明很困难
因此,您可能想要做的是使用XPath (或类似)来获取<br>的内容,然后根据div出现的次数拆分字符串。
由于您已经用ruby标记了这个问题,我建议您研究一下hpricot,因为它是一个非常好且快速的超文本标记语言(和XML)解析库,它应该比摆弄XPath有用得多
https://stackoverflow.com/questions/1485356
复制相似问题