XPath: Как выбрать узел с некоторым атрибутом по индексу? - PullRequest
22 голосов
/ 28 апреля 2011

У меня есть несколько узлов с определенным атрибутом, и мне нужно выбрать один из них по индексу.Например, мне нужно выбрать второй <div> с классом 'test' - //div[@class='test'][2] не работает.

Можно ли выбрать узел с некоторым атрибутом по индексу?Как это сделать?

Ответы [ 2 ]

54 голосов
/ 28 апреля 2011

Это часто задаваемые вопросы .

В XPath оператор [] имеет более высокий приоритет (связывает сильнее), чем псевдо-оператор //.

Из-за этого выражение:

//div[@class='test'][2]

выбирает все div элементы, атрибутом class которых является "test" и кто (элементы div) является вторым таким div дочерним элементом ихродитель.Это не то, что вы хотите.

Использование :

(//div[@class='test'])[2]
2 голосов
/ 28 апреля 2011

Я полагаю, что согласно спецификации XML атрибуты не имеют порядка.
Note that the order of attribute specifications in a start-tag or empty-element tag is not significant.
См. здесь Я думаю, что вам лучше перестроить структуру, чтобыАтрибут порядка ничего не описывает.Если вы можете дать более подробную информацию, мы могли бы предложить предложения.

РЕДАКТИРОВАТЬ: Перечитывая ваше сообщение, похоже, вы пытаетесь найти порядок узлов, а не порядок атрибутов.Порядок узлов разрешен, и ваш синтаксис выглядит нормально.В каком программном обеспечении вы это делаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...