Quiero crear una aplicación que tome algo de una página web y que se la muestre al usuario. Para hacer esto, utilicé HtmlAgilityPack. Agregué la referencia al proyecto (v. 1.4.6.0 de NuGet) y usé el código que un usuario publicó en otra pregunta hace algunos años.
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
}
}
}
Mi problema es que me sale el siguiente error:
El tipo 'System.Xml.XPath.IXPathNavigable' se define en un ensamblado al que no se hace referencia. Debe agregar una referencia al ensamblado 'System.Xml.XPath, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'.
Así que intenté agregar la referencia usando la siguiente dll:
c: \ Archivos de programa (x86) \ Microsoft SDKs \ Silverlight \ v5.0 \ Libraries \ Client \ System.Xml.XPath.dll
Pero esta vez recibo el siguiente error (lo traduje porque recibo un error italiano, por lo que puede que no sea la traducción correcta):
No es posible agregar una referencia a un ensamblado para el proyecto que no sea compatible o de una versión anterior
¿Que puedo hacer?
Parece que HtmlAgilityPack (HAP) para aplicaciones de la tienda de Windows Phone 8.1 no es compatible con XPath, similar a HAP para aplicaciones de la tienda de Windows 8 .
En este caso, puede utilizar la API LINQ de HAP en lugar de la API de XPath, por ejemplo:
......
if (htmlDoc.DocumentNode != null)
{
HtmlAgilityPack.HtmlNode bodyNode = doc.DocumentNode
.DescendantsAndSelf("body")
.FirstOrDefault();
if (bodyNode != null)
{
// Do something with bodyNode
}
}
......
Incluso si realmente tiene el proyecto de aplicaciones Silverlight de Windows Phone, LINQ API sigue siendo una posible solución.