Estoy usando Nokogiri con Ruby para interpretar el contenido de un archivo XML. Me gustaría obtener una matriz (o similar) de todos los elementos que son hijos directos de <where>
en mi ejemplo. Sin embargo, recibo varios nodos de texto (por ejemplo, "\n\t\t\t"
), que no quiero. ¿Hay alguna manera de eliminarlos o ignorarlos?Obtener hijos de un elemento sin los nodos de texto
El anteriores salidas de guión Ruby:
[#<Nokogiri::XML::Text:0x100344c "\n\t\t\t">, #<Nokogiri::XML::Element:0x1003350 name="username" attributes=[#<Nokogiri::XML::Attr:0x10032fc name="compare" value="e">] children=[#<Nokogiri::XML::Text:0x1007580 "Admin">]>, #<Nokogiri::XML::Text:0x100734c "\n\t\t\t">, #<Nokogiri::XML::Element:0x100722c name="rank" attributes=[#<Nokogiri::XML::Attr:0x10071d8 name="compare" value="gt">] children=[#<Nokogiri::XML::Text:0x1006cec "5">]>, #<Nokogiri::XML::Text:0x10068a8 "\n\t\t">]
me gustaría obtener alguna manera el objeto siguiente:
[#<Nokogiri::XML::Element:0x1003350 name="username" attributes=[#<Nokogiri::XML::Attr:0x10032fc name="compare" value="e">] children=[#<Nokogiri::XML::Text:0x1007580 "Admin">]>, #Nokogiri::XML::Element:0x100722c name="rank" attributes=[#<Nokogiri::XML::Attr:0x10071d8 name="compare" value="gt">] children=[#<Nokogiri::XML::Text:0x1006cec "5">]>]
Actualmente puedo evitar el problema utilizando
c.each{|child|
if !child.text?
...
end
}
pero c.length == 5
. Sería hacer mi vida más fácil si alguien puede sugerir cómo excluir los nodos de texto secundario directo de C, de manera que c.length == 2
Gracias. La opción 2 parece estar funcionando perfectamente. – SimonMayer