无法获取 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"}]
我有以下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"}]