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?
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.