【发布时间】:2017-08-30 07:37:15
【问题描述】:
使用 Rails 5、Ruby 2.4。如果我使用 Nokogiri 解析找到了一个节点,我将如何找到在我找到的节点之前出现的所有节点,这些节点不包括该找到的节点?也就是说,假设我的文档是
<outer>
<p>Hello</p>
<inner>
<most_inner class="abc">Howdy</most_inner>
<most_inner class="def">Next</most_inner>
</inner>
</outer>
然后我运行一个类似的查询
node = doc.search('//*[contains(@class, "def")]').first
如何定位所有前面的节点(不包括我刚刚确定的节点)?我期望的节点是
<p>Hello</p>
<most_inner>Howdy</most_inner>
【问题讨论】:
-
为什么没有选择
<inner>?为什么要定位最后一个<most_inner>节点?您是否只想要<inner>或该级别的所有其他人的前一个兄弟?你的问题没有显示出很多努力的证据。请阅读“How much research effort is expected of Stack Overflow users?”和“minimal reproducible example”。 -
inner 包括 most_inner 节点,他想排除它,正如我理解的那样
-
嗨@TheChamp,你是对的——无论有问题的节点是什么,我都希望找到不包含该节点的所有先前节点。
-
如果
.abc实际上是<really_inner class="abc"><most_inner>Howdy</most_inner></really_inner>,您对答案有何期望?most_inner、really_inner,还是两者兼而有之?
标签: ruby parsing nokogiri ruby-on-rails-5