Obtención de texto de HTML en WP7 usando HtmlAgilityPack

c# html-agility-pack windows-phone-7

Pregunta

Estoy tratando de extraer texto de HTML usando HtmlAgilityPack. He añadido con éxito HtmlAgilityPack a mi proyecto. Sin embargo, intenté el siguiente código para extraer el texto del cuerpo:

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.LoadXML(xmlString);  to load from a string

// 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)
    {
        HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");

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

y recibo el siguiente error al construir el proyecto.

Error 1 El tipo 'System.Xml.XPath.IXPathNavigable' se define en un ensamblaje al que no se hace referencia. Debe agregar una referencia al ensamblado 'System.Xml.XPath, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'. D: \ test \ test \ MainPage.xaml.cs 58

Debo agregar que agregué la referencia de System.Xml y aún obtengo este error. ¿Me pueden ayudar por favor en este problema? Gracias.

Respuesta aceptada

Gracias. Me di cuenta de que tenía que agregar una referencia a System.Xml.XPath desde la carpeta Silverlight 4.0 disponible en la carpeta principal de Microsoft SDK.


Respuesta popular

Con HAP en el teléfono, tendrás que usar Linq2Xml para encontrar cosas en el HTML analizado. Y es posible que tenga que compilar la versión del teléfono desde la fuente (HAPPhone).

public void Hap()
{
   HtmlWeb.LoadAsync("http://www.page.com", OnCallback);              
}



private void OnCallback(object s, HtmlDocumentLoadCompleted htmlDocumentLoadCompleted)
        {            
            var htmlDocument = htmlDocumentLoadCompleted.Document;

            var test = htmlDocument.DocumentNode.Descendants("select").ToList();


            var test2 = (from h in htmlDocument.DocumentNode.Descendants("select")
                         where h.Attributes["id"].Value == "stateDropdown"
                         select h).FirstOrDefault().ChildNodes.ToList();
        }



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué