Ошибка сборки с помощью HtmlAgilityPack

c# html-agility-pack reference windows-phone-8.1 xpath

Вопрос

Я хочу создать приложение, которое берет что-то с веб-страницы и показывает его пользователю. Чтобы сделать это, я использовал HtmlAgilityPack. Я добавил ссылку на проект (v. 1.4.6.0 от NuGet), и я использовал код, который пользователь опубликовал в другом вопросе несколько лет назад.

            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);
            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
                    }
                }
            }

Моя проблема в том, что я получаю следующую ошибку:

Тип «System.Xml.XPath.IXPathNavigable» определен в сборке, на которую не ссылаются. Вы должны добавить ссылку на сборку «System.Xml.XPath, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35».

Поэтому я попытался добавить ссылку, используя следующую DLL:

c: \ Program Files (x86) \ Microsoft SDK \ Silverlight \ v5.0 \ Libraries \ Client \ System.Xml.XPath.dll

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

Невозможно добавить ссылку на сборку на проект, который несовместим или имеет вышеуказанную версию

Что я могу сделать?

Популярные ответы

Похоже, что приложение HtmlAgilityPack (HAP) для приложений, поддерживающих Windows Phone 8.1, не поддерживает XPath, аналогично HAP для приложений для Windows 8 .

В этом случае вы можете использовать LINQ API для HAP вместо XPath API, например:

......
if (htmlDoc.DocumentNode != null)
{
    HtmlAgilityPack.HtmlNode bodyNode = doc.DocumentNode
                                           .DescendantsAndSelf("body")
                                           .FirstOrDefault();
    if (bodyNode != null)
    {
        // Do something with bodyNode
    }
}
......

Даже если у вас действительно есть проект приложений Silverlight для Windows Phone, LINQ API по-прежнему является возможным решением.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему