我试图存储"目录中的所有文本节点"元素到一个字符串数组。我得到一个空数组返回,我无法弄清楚数组为空的原因。
这是XML
<config>
<directories>
<directory>directory1</directory>
<directory>directory2</directory>
</directories>
</config>
这是红宝石代码
require 'nokogiri'
directories = []
directories.each do |directory|
directory = config.at('//config/directories').text
end
我错过了什么?
答案 0 :(得分:1)
那是因为你正在迭代一个空数组。您创建的directories
数组没有任何内容,这就是为什么当您从目录中分配迭代内容时,您也会得到一个空数组。
尝试迭代解析的XML,然后推送,如:
xml_structure = <<-XML
<config>
<directories>
<directory>directory1</directory>
<directory>directory2</directory>
</directories>
</config>
XML
doc = Nokogiri::XML(xml_structure)
directories = []
doc.xpath('//config/directories/directory').each do |directory|
directories.push directory.text
end
p directories
# ["directory1", "directory2"]
或者使用地图也可以这样做:
doc = Nokogiri::XML(xml_structure)
p doc.xpath('//config/directories/directory').map(&:text)
# ["directory1", "directory2"]