пакет xpath и htmlagility

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

Ответ: **("./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;

Я получаю это до "\r\n\t\t\r\n\t\t\t4:30am\r\n\t\t\r\n\t", когда пытаюсь что-то сделать с интервалом I получить исключения xpath. Что я должен добавить к ("./td[2]"), чтобы получить 4:30 утра?

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

person JRB    schedule 05.04.2011    source источник
comment
Вы можете ответить на свой вопрос. Выполнение этого в том же вопросе делает его ненастоящим вопросом.   -  person    schedule 05.04.2011


Ответы (1)


Я не знаю, подходит ли 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;
person Nixie    schedule 05.04.2011
comment
это действительно круто. Используете ли вы потоковое чтение для извлечения html из URL-адреса? Будучи новичком в программировании, я люблю узнавать что-то новое. - person JRB; 05.04.2011