Ruby 将XML文本节点存储到数组中

Ruby 将XML文本节点存储到数组中,ruby,xml,nokogiri,Ruby,Xml,Nokogiri,我试图将“directory”元素的所有文本节点存储到字符串数组中。我返回了一个空数组,我不知道为什么数组是空的 这里是XML <config> <directories> <directory>directory1</directory> <directory>directory2</directory> </directories> </config>

我试图将“directory”元素的所有文本节点存储到字符串数组中。我返回了一个空数组,我不知道为什么数组是空的

这里是XML

<config>
    <directories>
        <directory>directory1</directory>
        <directory>directory2</directory>
    </directories>
</config>

我遗漏了什么?

那是因为你在一个空数组上迭代。您创建的
目录
数组没有任何内容,这就是为什么当您将迭代中的内容分配给目录时,也会得到一个空数组

尝试迭代解析后的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"]
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"]