首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在<br>或<br />之间获取文本的xpath?

如何在<br>或<br />之间获取文本的xpath?
EN

Stack Overflow用户
提问于 2009-09-28 03:55:48
回答 3查看 8.2K关注 0票数 2
代码语言:javascript
复制
</div>
apple
<br>
banana
<br/>
watermelon
<br>
orange

假设有上述情况,那么如何使用Xpath获取每个结果呢?必须使用某种类型的xpath。

我应该使用substring-after(following-sibling...)吗?

编辑:我正在使用Nokogiri解析器。

EN

回答 3

Stack Overflow用户

发布于 2009-09-28 03:59:27

当然,您可以使用"//br/text()",但这将返回<br>标记内的所有文本节点。但是,由于上面的内容不是格式良好的xml,我不确定您将如何对其使用xpath。正则表达式通常不适合html,但是有html (而不是xhtml)解析器可用。我犹豫要不要为ruby推荐一个,因为那不是我的领域,我只是在谷歌上搜索……

票数 4
EN

Stack Overflow用户

发布于 2009-09-28 13:48:59

尝试执行以下操作,以从尾随和前导空格中剥离的字符串数组形式获取<br>标记的所有文本同级:

代码语言:javascript
复制
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

这是你想要的吗?

票数 2
EN

Stack Overflow用户

发布于 2009-09-28 04:02:19

这里有几个问题:

  1. XPath在XML上工作-你有不是XML的HTML (基本上,标签不匹配,所以当你给它一个文本时,XML解析器会抛出一个异常)
  2. XPath通常也通过查找标签内的属性来工作。由于您的<br>标记实际上并不包含文本,它们只是位于文本之间,因此这也将证明

很困难

因此,您可能想要做的是使用XPath (或类似)来获取<br>的内容,然后根据div出现的次数拆分字符串。

由于您已经用ruby标记了这个问题,我建议您研究一下hpricot,因为它是一个非常好且快速的超文本标记语言(和XML)解析库,它应该比摆弄XPath有用得多

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1485356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档