将 XML 个文本节点存储到数组中
Storing XML text nodes into an array
我正在尝试将 "directory" 元素的所有文本节点存储到一个字符串数组中。我收到了一个空数组,但我不知道为什么数组是空的。
这是XML
<config>
<directories>
<directory>directory1</directory>
<directory>directory2</directory>
</directories>
</config>
这是 ruby 代码
require 'nokogiri'
directories = []
directories.each do |directory|
directory = config.at('//config/directories').text
end
我错过了什么?
那是因为您正在遍历一个空数组。您创建的 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"]
我正在尝试将 "directory" 元素的所有文本节点存储到一个字符串数组中。我收到了一个空数组,但我不知道为什么数组是空的。
这是XML
<config>
<directories>
<directory>directory1</directory>
<directory>directory2</directory>
</directories>
</config>
这是 ruby 代码
require 'nokogiri'
directories = []
directories.each do |directory|
directory = config.at('//config/directories').text
end
我错过了什么?
那是因为您正在遍历一个空数组。您创建的 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"]