Erreur d'assemblage lors de l'utilisation de HtmlAgilityPack

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

Question

Je souhaite créer une application qui prend quelque chose d'une page Web et qui la montre à l'utilisateur. Afin de faire cette chose, j'ai utilisé HtmlAgilityPack. J'ai ajouté la référence au projet (version 1.4.6.0 de NuGet) et j'ai utilisé le code qu'un utilisateur a posté dans une autre question il y a quelques années.

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

Mon problème est que je reçois l'erreur suivante:

Le type 'System.Xml.XPath.IXPathNavigable' est défini dans un assemblage non référencé. Vous devez ajouter une référence à l'assembly 'System.Xml.XPath, Version = 2.0.5.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35'.

J'ai donc essayé d'ajouter la référence à l'aide de la DLL suivante:

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

Mais cette fois, je reçois l’erreur suivante (je l’ai traduite parce que j’obtiens une erreur en italien, donc ce n’est peut-être pas la traduction correcte):

Il n'est pas possible d'ajouter une référence à un assemblage du projet incompatible ou d'une version précédente.

Que puis-je faire?

Réponse populaire

Il semble que HtmlAgilityPack (HAP) pour les applications de magasin Windows Phone 8.1 ne prend pas en charge XPath, comme avec les applications de magasin HAP pour Windows 8 .

Dans ce cas, vous pouvez utiliser l'API LINQ de HAP au lieu de l'API XPath, par exemple:

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

Même si vous avez réellement un projet Windows Phone Silverlight Apps, LINQ API est toujours une solution de contournement possible.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi