Функции XPath .NET предлагают обычные функции, такие как SelectSingleNode и SelectNodes. Они могут указать находить только дочерние узлы в запросе XPath.
Но что, если я хочу проверить текущий узел, соответствует ли он заданной спецификации XPath? Как это работает?
Допустим, у меня есть HTML-документ, в котором я нашел узел table.
<table>
<tr>
<td>...</td>
<tr>
<tr class = "abc">
<td>...</td>
</tr>
</table>
Я могу найти все элементы tr оттуда. Как только я добрался до элемента tr (я мог также попасть туда через навигацию, а не через XPath), я хотел бы знать, соответствует ли он определенным критериям. Их лучше всего указывать в виде строки XPath.
Вот что я ищу:
XmlNode trNode = ...;
bool result = trNode.Matches("tr[@class='abc']");
Поддерживается ли это функциональностью .NET (очень ограниченной) XPath? Или, если это имеет значение, пакет HtmlAgilityPack?
Он всегда равен нулю, потому что не является собственным потомком.
Что ты имеешь в виду? Вы можете выбирать потомков, а не только детей: //tr[@calss = 'abc']
Элемент не является ни своим собственным потомком, ни другими его потомками. Это само по себе.





[...] what if I want to test the current node whether it matches a given XPath specification?
Вы можете проверить это с помощью оси self::.
Итак, если ваш текущий узел - tr, и вы хотите проверить, является ли текущий элемент tr элементом с атрибутом class со значением abc, используйте следующее выражение XPath:
self::tr[@class='abc']
Я думаю, это то, что вы хотите, не так ли?
Почему вы не можете просто выбрать этот узел
trи проверить, является ли он нулевым или нет?