Я использую Nokogiri с Ruby для интерпретации содержимого XML-файла. Я хотел бы получить массив (или аналогичный) всех элементов, которые являются прямыми дочерними элементами
в моем примере. Однако Я получаю различные текстовые узлы (например, "\ n \ t \ t \ t"
), которые Я не хочу.Есть ли способ удалить или проигнорировать их?
@body = "
<xml>
<request>
<where>
<username compare='e'>Admin</username>
<rank compare='gt'>5</rank>
</where>
</request>
</xml>" #in my code, the XML contains tab-indentation, rather than spaces. It is edited here for display purposes.
@noko = Nokogiri::XML(@body)
xml_request = @noko.xpath("//xml/request")
where = xml_request.xpath("where")
c = where.children
p c
Вышеупомянутый сценарий Ruby выводит:
[#
Я бы хотел как-нибудь получить следующий предмет:
[#
В настоящее время я могу обойти проблему, используя
c.each{|child|
if !child.text?
...
end
}
, но c.length == 5
. Мне стало бы легче, если бы кто-нибудь мог предложить, как исключить прямые дочерние текстовые узлы из c, чтобы c.length == 2