2013-08-13 5 views
2

У меня возникли проблемы с разбором некоторых узлов с помощью HtmlAgilityPack.Получить второй узел с тем же классом

Вот проблема:

У меня есть много узлов с классом «тест», но я хочу SELCT второй.

Если я что-то вроде этого:

html.DocumentNode.SelectSingleNode ("//font[@class='test' and position()=1]") 

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

html.DocumentNode.SelectSingleNode ("//font[@class='test' and position()=2]") 

Эта строка кода приносит мне все из них, и я действительно запутать сейчас, потому что с помощью позиции() = 1 Lib пришлось возвращать только первый, не так ли?

html.DocumentNode.SelectNodes ("//font[@class='test' and position()=1]") 

Спасибо, ребята!

+1

'position()' - это позиция в родительском элементе элемента 'font', а не позиция в последовательности всех элементов шрифта класса' text'! – FrankPl

+0

Спасибо, Фрэнк! Больше не смущаюсь xD – Crasher

ответ

6

Правильный код будет

html.DocumentNode.SelectSingleNode ("(//font[@class='test'])[2]") 

Код, который вы использовали выбирает первый или второй тестовый элемент внутри родительского элемента, не первый или второй элемент в последовательности всех font элементов класса test.

+0

Большое вам спасибо! Теперь он работает благодаря вам !!!!! – Crasher

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