无法获取 nokogiri xmlelement 文本值

Unable to get nokogiri xmlelement text value

我有以下XML内容。

<info>
    <meta name="alias">alias1</meta>
    <meta name="score">.60</meta>
</info>
<info>
    <meta name="alias">alias2</meta>
    <meta name="score">.50</meta>
</info>

我需要返回每个值,但很难做到。

doc.xpath("//info").each do |info_entry|
  info_entry.xpath("meta").each do |meta_entry|
      if meta_entry['name'] == 'alias'
          the_alias = meta_entry.xpath('text()').text
      elsif meta_entry['name'] == 'score'
          score = meta_entry.xpath('text()').text
      end
      // add struct containing alias and score to list
  end
end

但是,我没有从文本中得到任何信息。我尝试了很多不同的东西:inner_text、inner_html、内容、价值,都没有用。我试过 meta_entry.at、meta_entry.search 等。

有什么我想念的吗?如有任何建议,我们将不胜感激。

您需要删除 xpath('text()')。你可以摆脱条件并构建一个可行的数据结构,就像这样:

def meta_contents(doc)
  doc.xpath("//info").map do |info_entry|
    info_entry.xpath("meta").map do |meta_entry|
      [meta_entry["name"], meta_entry.text]
    end.to_h
  end
end

>> meta_contents(doc)
#> [{"alias"=>"alias1", "score"=>".60"}, {"alias"=>"alias2", "score"=>".50"}]