Node # child - самый быстрый способ получить первый дочерний элемент.
Однако, если искомый узел НЕ является первым (например, 99-й), то более быстрого способа не существует.выбрать этот узел, чем вызывать #children и индексировать в него.
Вы правы, утверждая, что создание NodeSet для всех детей дорого, если вам нужен только первый.
Oneограничивающим фактором является то, что libxml2 (библиотека XML, лежащая в основе Nokogiri) хранит дочерние узлы в виде связанного списка.Поэтому вам нужно будет пройти по списку (O (n)), чтобы выбрать нужный дочерний узел.
Можно было бы написать метод, который просто возвращает n-й дочерний элемент, без создания экземпляра NodeSet или даже ruby.предметы для всех остальных детей.Я бы посоветовал открыть запрос на добавление http://github.com/tenderlove/nokogiri/issues или отправить электронное письмо в список рассылки nokogiri.