2009-07-10 2 views
1

Я использую Hpricot для перемещения пакета XML. Для каждого узла, на котором я включен, я хочу получить список непосредственных детей. Однако при использованииНе жадные поиски с помощью Hpricot?

(current_node/:section) 

Я получаю ВСЕ разделы потомков, а не только ближайшие дети.

Как я могу обойти это?

+0

тоже пытался понять это сегодня –

ответ

1

Вы можете использовать только current_node.children.

+0

Это работает, но поскольку он основан на узле, он также дает символы конца строки/возврата: «\ n». Таким образом, вам придется перебирать массив результатов и выбирать только элементы и т. Д. Кроме того, он возвращает весь элемент. Поэтому, если у этого элемента есть дочерние элементы, тогда 'doc.at (" element1 "). Children [1]' может возвращать '{elem " \ n "{emptyelem }" \ n "}' например. Я не могу понять из первоначального вопроса, является ли это проблемой или нет. – atomicules

0

Из documentation:

Если вы ищете для одного элемента, то в методе будет возвращать первый элемент, совпавший с выражением . В этом случае вы получите обратно сам элемент, а не массив Hpricot :: Elements.

Для вас работает следующее:

current_node.at(:section) 

Если вы предпочитаете, вы можете также использовать xpath child operator.

+0

Я ищу всех прямых детей, и эти дети могут быть чем угодно –

+0

Да, это не тот вопрос, который задал вопрос - он просит ВСЕХ детей, а не первым. –

Смежные вопросы