пакет xpath и htmlagility - PullRequest
       25

пакет xpath и htmlagility

1 голос
/ 05 апреля 2011

Я понял это! Я оставлю это сообщение на всякий случай, если у такого же новичка, как я, возникнет тот же вопрос.

Ответ: **("./td[2]/span[@class='smallfont']")***

Я новичок в ловкости xpath и html. Я так близко, пока так далеко.

ЦЕЛЬ: вывести 4: 30 утра

с использованием следующего пакета htmlagility:

foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table[@id='weekdays']/tr[2]")){
string time = table.SelectSingleNode("./td[2]").InnerText;

Когда я пытаюсь что-то сделать с промежуток я получаю исключения xpath. Что я должен добавить к ("./td[2]"), чтобы в итоге получилось 4:30 ??1020*

HTML
<td class="alt1 espace" nowrap="nowrap" style="text-align: center;">
<span class="smallfont">4:30am</span>
</td>

1 Ответ

0 голосов
/ 05 апреля 2011

Я не знаю, является ли вариант Linq, но вы могли бы также сделать что-то вроде этого:

        var time = string.Empty;
        var html =
            "<td class=\"alt1 espace\" nowrap=\"nowrap\" style=\"text-align: center;\"><span class=\"smallfont\">4:30am</span></td>";

        var document = new HtmlDocument() { OptionWriteEmptyNodes = true, OptionOutputAsXml = true };

        document.LoadHtml(html);

        var timeSpan =
            document.DocumentNode.Descendants("span").Where(
                n => n.Attributes["class"] != null && n.Attributes["class"].Value == "smallfont").FirstOrDefault();

        if (timeSpan != null)
            time = timeSpan.InnerHtml;
...