gpt4 book ai didi

ruby-on-rails - 在访问文本方法之前检查 Nokogiri 对象是否为 nil

转载 作者:数据小太阳 更新时间:2023-10-29 08:30:28 24 4
gpt4 key购买 nike

我正在使用 Nokogiri 搜索从 API 收到的 XML。

fiber = doc.xpath("/*[name()='food']/*[name()='servings']/*
[name()='serving']/*[name()='fiber']").first.text

但有时,响应中会缺少子元素(例如 fiber)。在这种情况下,Nokogiri 返回一个 nil 对象,我的代码抛出相应的异常(nil:NilClass 的未定义方法“text”),因为我正在尝试访问 nil 对象的“text”方法。

在实际尝试调用“文本”方法之前检查子元素(例如 fiber)是否存在的干净快速的方法是什么?如果它不存在,我想将该值设置为 0。我也在为其他几个子元素(例如卡路里、碳水化合物等)执行此操作

最佳答案

对于这些情况你可以使用“try”

fiber = doc.xpath("/*[name()='food']/*[name()='servings']/*
[name()='serving']/*[name()='fiber']").first.try(:text)

如果 first 为 nil 则返回 nil,如果不为 nil 则调用 text

如果你需要一个默认值以防它为 nil 你可以这样做

fiber = doc.xpath("/*[name()='food']/*[name()='servings']/*
[name()='serving']/*[name()='fiber']").first.try(:text) or 'default'

关于ruby-on-rails - 在访问文本方法之前检查 Nokogiri 对象是否为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39665287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com