См. в этом посте о том, как пропустить записи при использовании блока в ruby.Метод each () в doc.elements вызывается с блоком (код, содержащий gsub и вызывающий вызовы).Ключевое слово «next» позволит вам прекратить выполнение блока для текущего элемента и перейти к следующему.
doc.elements.each("/educationInfo/extensionInfo/nya:textualDescription/nya:textualDescriptionPhrase | /ns:educationInfo/ns:extensionInfo/gu:guInfoExtensions/gu:guSubject/gu:descriptions/gu:description | //*[name()='ct:text']"){
|e| m = e.text
m.gsub!(//, "")
next if m.empty?
puts "Description: " + m
puts ""
}
Мы знаем, что «m» - это строка (а не nil) при использованииключевое слово "next", потому что мы только что назвали gsub!на нем, который не выдавал ошибку при выполнении этой строки.Это означает, что пустые описания вызваны пустыми строками, а не объектами nil.