如何在 Nokogiri 中使用变量包含

How to use variable in Nokogiri contains

我有一个 XML 文件,例如:

<main>
  <key>xxx</key>
  <key>yyy</b>
  <key>zzz</key>
</main>

要检查 XML 是否有带有文本 "yyy" 的节点,我可以使用:

xml = Nokogiri::XML(file)
if xml.at('main/key:contains("yyy")')
  #code will go here
end

但是如果文本值是一个变量,我该如何使用相同的语句呢? 注意:我尝试了以下解决方案但它不起作用:

var = "yyy"
if xml.at("main/key:contains(#{var})")
"main/key:contains(#{var})"

内插到

"main/key:contains(yyy)"

请注意没有引号。你想要这个:

"main/key:contains(\"#{var}\")"

或更漂亮

%Q{main/key:contains("#{var}")}
如果您不确定 var 的内容,

和一些 clever escaping 也会提供帮助。