Obtention de texte HTML sur WP7 à l'aide de HtmlAgilityPack

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

Question

J'essaie d'extraire du texte HTML en utilisant HtmlAgilityPack. J'ai ajouté avec succès HtmlAgilityPack à mon projet. Cependant, j'ai essayé le code suivant pour extraire le corps du texte:

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

et je reçois l’erreur suivante lors de la construction du projet.

Erreur 1 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'. D: \ test \ test \ MainPage.xaml.cs 58

Je devrais ajouter que j'ai ajouté la référence System.Xml et que je reçois toujours cette erreur. Pouvez-vous m'aider s'il vous plaît ce problème? Merci.

Réponse acceptée

Merci. J'ai réalisé que je devais ajouter une référence à System.Xml.XPath à partir du dossier Silverlight 4.0 disponible dans le dossier parent du SDK Microsoft.


Réponse populaire

Avec HAP au téléphone, vous devrez utiliser Linq2Xml pour rechercher des éléments dans le code HTML analysé. Et vous devrez peut-être créer la version du téléphone à partir de la source (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();
        }



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