Nokogiri,仅当存在于文件中时



实际上我正在与Nokogiri合作:

gruppe.css('diagnosen_liste>diagnose').each do |diagnose|
    cesc = diagnose.css('icd_code')[0]
    cesc2 = diagnose.css('bezeichnung')[0]
  cesc3 = diagnose.css('abrechenbar')[0]
  cesc4 = diagnose.css('geschlechtsbezug')[0]
    sub = ""
  diagnose.css('diagnosethesaurus_liste>diagnosethesaurus').each do |subcategory|
    sub << "#{subcategory['V']};"
  end
    arr << "Icd3.create!({:nummer => '#{cesc['V']}', :bezeichnung => '#{cesc2['V']}', :icd2_id => '#{b.to_s}', :sub => '#{sub}', :abrechenbar =>'#{cesc3['V']}', :geschlechtsbezug =>'#{cesc4['V']}'})" + "n"
end

我的问题是:

cesc4 = diagnose.css('geschlechtsbezug')[0]

不是每个诊断都可用。所以我想做一个像这样的功能

如果diagnose.css('geschlechtsbezug')[0]不存在,cesc4=nil

也许有人可以告诉我如何写这个代码!谢谢

由于您只对第一个元素感兴趣,因此可以使用#at_css而不是#css。因此,您可以执行以下代码:

cesc4 = diagnose.at_css('geschlechtsbezug')

如果未找到geschlechtsbezug,则cesc4将自动设置为nil

更新

问题是我的文件看起来是这样的:意味着我只想要['V']

然后我会做如下操作:

 cesc4 = diagnose.at_css('geschlechtsbezug')
 cesc4 &&= cesc4['V']

这不是像那么简单吗

cesc4 = diagnose.css('geschlechtsbezug').empty? ? nil : diagnose.css('geschlechtsbezug')[0]

我喜欢做:

cesc4 = diagnose.at('geschlechtsbezug')['V'] rescue nil

有些人不喜欢救援,但对我来说,这是最直接的。当我读到三元或if/else时,我很清楚那里发生了什么,没有那么多。

我用这个简单的代码解决了我的问题:

if diagnose.at_css('geschlechtsbezug') == nil
cesc4 = diagnose.at_css('geschlechtsbezug')
else
cesc4 = diagnose.css('geschlechtsbezug')[0]['V']
end

感谢@Priti的帮助!

相关内容

  • 没有找到相关文章

最新更新