Как исключить определенный класс, используя SelectNodes? - PullRequest
0 голосов
/ 05 мая 2018

Я использую HtmlAgiliyPack для получения списка tr с сайта. Теперь в этой таблице есть эти строки:

<tr class="group-head">
<tr/>
<tr/>
<tr class="group-head">
<tr/>

Я хочу получить только tr без класса group-head Я пытался:

HtmlNodeCollection rows = doc
           .GetElementbyId("page_player_1_block_player_trophies_5")
            .SelectNodes("//tr[not(@class, 'group-head')]");

но это возвращение:

System.Xml.XPath.XPathException: 'Функция' not 'в' // tr [not (@class, 'group-head')] 'имеет недопустимое количество аргументов.'

1 Ответ

0 голосов
/ 05 мая 2018

Если вы хотите проверить неравенство, используйте

//tr[not(@class='group-head')]

Во всем выражении это

HtmlNodeCollection rows = 
  doc.GetElementbyId("page_player_1_block_player_trophies_5")
     .SelectNodes("//tr[not(@class='group-head')]");

Или, если в значении атрибута более одной строки, используйте функцию contains(...):

//tr[not(contains(@class,'group-head'))]
...