Как использовать HTML Agility Pack

В дополнение к ответам, размещенным здесь, убедитесь, что вы прочитали эту статью:

http://24ways.org/2009/rock-solid-html-emails

613
задан carla 23 November 2017 в 01:59
поделиться

2 ответа

Сначала установите пакет nuget HTMLAgilityPack в свой проект.

Затем, в качестве примера:

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

// There are various options, set as needed
htmlDoc.OptionFixNestedTags=true;

// filePath is a path to a file containing the html
htmlDoc.Load(filePath);

// Use:  htmlDoc.LoadHtml(xmlString);  to load from a string (was htmlDoc.LoadXML(xmlString)

// ParseErrors is an ArrayList containing any errors from the Load statement
if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
{
    // Handle any parse errors as required

}
else
{

    if (htmlDoc.DocumentNode != null)
    {
        HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");

        if (bodyNode != null)
        {
            // Do something with bodyNode
        }
    }
}

(NB: этот код является только примером и не обязательно лучший / единственный подход. Не используйте его вслепую в своем приложении.)

HtmlDocument . Метод Load () также принимает поток, который очень полезен при интеграции с другими ориентированными на поток классами в платформе .NET. Хотя HtmlEntity.DeEntitize () - еще один полезный метод для правильной обработки сущностей HTML. (спасибо Matthew)

HtmlDocument и HtmlNode - это классы, которые вы будете использовать чаще всего. Подобно синтаксическому анализатору XML, он предоставляет методы selectSingleNode и selectNodes, которые принимают выражения XPath.

Обратите внимание на логические свойства HtmlDocument.Option ?????? . Они управляют тем, как методы Load и LoadXML будут обрабатывать ваш HTML / XHTML.

Также существует скомпилированный файл справки под названием HtmlAgilityPack.chm, в котором есть полная ссылка на каждый из объекты. Обычно он находится в базовой папке решения.

357
ответ дан 22 November 2019 в 21:55
поделиться

Я не знаю, поможет ли это вам, но я написал пару статей, которые знакомят с основами.

Следующая статья завершена на 95%, мне просто нужно написать объяснения последних нескольких частей кода, который я написал. Если вам интересно, я постараюсь не забыть разместить здесь, когда опубликую.

166
ответ дан 22 November 2019 в 21:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: