我正在使用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 vFTP
和version 2.2.1
。这很好,因为它匹配正确(vFTP 2.2.1)。
但是,如果version nil
,我现在遇到问题,因为它现在会与所有版本的vFTP相匹配。
检查if statement
的{{1}}似乎合乎逻辑,但由于某种原因,这对我来说似乎不对。
答案 0 :(得分:0)
以下是几种方法。在下一行:
next unless [product, version].all?(&:present?)
或
next if [product, version].any?(&:nil?)