Ruby保存变量(如果存在)

时间:2015-12-29 15:20:21

标签: ruby-on-rails ruby xml nokogiri

我正在使用Nokogiri解析XML文件,我只想保存变量,如果XML中存在该值的话。现在,我正在用nil救出它,这对我产生了错误的结果。那么,如果两个都具有实际值(不是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相匹配。

检查if statement的{​​{1}}似乎合乎逻辑,但由于某种原因,这对我来说似乎不对。

1 个答案:

答案 0 :(得分:0)

以下是几种方法。在下一行:

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

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