如何在Ruby中检查XML中是否存在特定节点

时间:2015-07-24 03:21:06

标签: ruby xml nokogiri

我想检查特定节点下是否存在节点,它可以存在于任何级别。 (它可以更深)。

对于这个XML:

<main>
  <sub>
    <inner>
      <first></first>
      <second></second>
    </inner>
  </sub>
</main>

如何在不使用XPath sub的情况下使用Nokogiri检查first节点是否有内部节点'/sub/inner'

1 个答案:

答案 0 :(得分:2)

除非您知道.navbar-inverse .navbar-collapse { border: none; }; 节点位于顶层,否则您的XPath不正确。将XPath选择器视为OS中的路径。 sub将成为驱动器的根源。

为了清晰起见,我建议使用CSS选择器:

/sub

require 'nokogiri' doc = Nokogiri::HTML(<<EOT) <main> <sub> <inner> <first>first_text</first> <second></second> </inner> </sub> </main> EOT doc.at('sub first').text # => "first_text" 表示'sub first'必须存在first下的某个位置。

这可能会有所帮助:

'sub'