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.
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.
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();
}