Ruby保存变量(如果存在)



我正在用Nokogiri解析一个XML文件,只有在XML中存在该变量的值时,我才想保存该变量。现在,我正在用nil来拯救它,这对我来说产生了错误的结果。那么,如果这两个值都有实际值(而不是零),我如何才能将我的语句设置为只保存呢?

port.xpath("service").each do |service|
            product = service.at_xpath("@product").value rescue nil
            version = service.at_xpath("@version").value rescue nil

目前,当解析文件时,这两个值都可能为nil,然后与所有值匹配!相反,如果解析器找不到product&version匹配。

例如,假设XML表示服务是product vFTPversion 2.2.1。这很好,因为它匹配正确(vFTP 2.2.1)。

然而,如果是version nil,我现在有一个问题,因为它现在将与所有版本的vFTP匹配。

检查defined?if statement似乎是合乎逻辑的,但出于某种原因,这对我来说似乎不正确。

这里有几种方法。下一行:

next unless [product, version].all?(&:present?)

next if [product, version].any?(&:nil?)

相关内容

  • 没有找到相关文章

最新更新