html - 如何在不调用 "next_element"方法的情况下使用 Nokogiri 选择下一个元素?

标签 html css ruby xpath nokogiri

当我在另一台机器上运行我的代码时,出现以下错误: ruby: 符号查找错误:/usr/local/ruby/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.7.2/lib/nokogiri/nokogiri.so: undefined symbol: xmlNextElementSibling

当进程启动时,我收到以下警告: 警告:Nokogiri 是针对 LibXML 版本 2.7.8 构建的,但已动态加载 2.6.30 我目前无法更新 nokogiri,所以我试图深入研究源代码,问题似乎与 Nokogiri 调用的 next_element 方法有关,该方法在我的机器上工作但在另一台机器上爆炸。 因此我的问题是:如何轻松选择下一个 HTML 元素(特别是表格中的下一个“tr”)?

这是我使用的代码

def get_weight(spot)

      frame = spot.at_css("table[id='1']").css("tr")[1]
      starter = frame.at('tr:contains("D7r5")') 
      return nil if starter == nil
      starter = starter.next_element
      peso = []
      until starter.css("td")[1].nil?          
        data = starter.css("td")[1].inner_html.gsub(/\t{0..100}/, "").strip
        ndecimal = data.scan(/[0-9]{1,4},?.?[0-9]{0,3}/).last.gsub(",", ".")
        nmeasure = data.scan(/[kK][Gg]|\s[g]\s|[g]/).last
        case nmeasure
        when (/[kK][Gg]/)
          peso << ndecimal.to_f
        when (/g|\s[g]\s|[g]/)
          peso << ndecimal.to_f / 1000
        end 
        starter.next_element.nil? ? break : starter = starter.next_element
        end 
        return peso.max == 0 ? nil : peso.max
  end

最佳答案

next_element 的 XPath 等价物是 following-sibling::*[1]。或者只是 following-sibling::*,如果 XPath 将使用类似 at_xpath() 的东西执行,它只返回第一个匹配的默认节点。

关于html - 如何在不调用 "next_element"方法的情况下使用 Nokogiri 选择下一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37181831/

相关文章:

javascript - 将图像置于文本之上

javascript - Angularjs - 有没有办法以编程方式点击 HTML <select> 元素?

html - 选择类 :first-of-type for same html child tag

ruby-on-rails - 定义has_rich_text方法时__FILE__和__LINE__+1的作用是什么?

html - 如何在 iPad 中滚动 div 时修复增加的滚动条拇指大小

html - 向右浮动元素,但使其出现在 HTML 之后

html - 如何让 child 100% 的高度/父 flexbox 的宽度?

css - Bootstrap 在我的带有 mongodb 的 Rails 应用程序中不起作用

ruby - 当我在 ruby​​ 中调用 `./myshell` 时找不到命令

javascript - 动态创建元素并设计元素样式