Ruby 获取没有文本节点的元素的子元素

Ruby 获取没有文本节点的元素的子元素,ruby,xml,xpath,nokogiri,Ruby,Xml,Xpath,Nokogiri,我使用Nokogiri和Ruby来解释XML文件的内容。我希望得到一个数组或类似的所有元素,这些元素在我的示例中是的直接子元素。但是,我得到了各种文本节点,例如。\n\t\t\t,这是我不想要的。有什么方法可以删除或忽略它们吗 @正文= 管理 5. 在我的代码中,XML包含制表符缩进,而不是空格。出于显示目的,在此处对其进行编辑。 @noko=Nokogiri::XML@body xml_request=@noko.xpath//xml/request where=xml\u request.x

我使用Nokogiri和Ruby来解释XML文件的内容。我希望得到一个数组或类似的所有元素,这些元素在我的示例中是的直接子元素。但是,我得到了各种文本节点,例如。\n\t\t\t,这是我不想要的。有什么方法可以删除或忽略它们吗

@正文= 管理 5. 在我的代码中,XML包含制表符缩进,而不是空格。出于显示目的,在此处对其进行编辑。 @noko=Nokogiri::XML@body xml_request=@noko.xpath//xml/request where=xml\u request.xpathwhere c=儿童的位置 p c 上面的Ruby脚本输出:

[,]

我想以某种方式获得以下对象:

[,Nokogiri::XML::Element:0x100722c name=rank attributes=[]子类=[]>]

目前,我可以使用

c.each{|child|
  if !child.text?
    ...
  end
}

但是c.length==5。如果有人能建议如何从c中排除直接子文本节点,那么我的生活会更轻松,这样c.length==2

您至少有三个选项可供选择:

使用而不是c=where.children

仅直接选择子元素: c=xml_request.xpath'/where/*'或 c=其中。xpath'/*'

将子项列表筛选为: c=where.children.select&:element