HTML выбор C # - PullRequest
       17

HTML выбор C #

2 голосов
/ 06 февраля 2011

У меня есть несколько элементов в исходном коде, которые выглядят следующим образом.

<a  id="thread_title_158922" href="#"></a>

Проблема в том, что я не знаю число за заголовком.Поэтому я попробовал этот синтаксис:

        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(code);
        var items = doc.DocumentNode.SelectNodes("//a[@id='thread_title_*]");

Но это не работает.Есть ли решение для этого?

1 Ответ

2 голосов
/ 06 февраля 2011

Это работает (проверено):

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(code);
var items = doc.DocumentNode
               .SelectNodes("//a[starts-with(@id,'thread_title_')]");

Редактировать:

Я посмотрел другой ответ, прежде чем он был удален - и, по моему мнению, должен сработать так же (или я так думал):

var items = doc.DocumentNode
               .SelectNodes("//a[@id='thread_title_*']"); //returs null

После некоторых исследований выясняется, что поддержка XPath в HtmAgilityPack для атрибутов не поддерживает регулярные выражения, но вы можете использовать такие функциикак starts-with, contains, translate, substring-before и substring-after.Просто надо знать.

...