Ottenere testo da HTML su WP7 usando HtmlAgilityPack

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

Domanda

Sto cercando di estrarre il testo da HTML usando HtmlAgilityPack. Ho aggiunto con successo HtmlAgilityPack al mio progetto. Tuttavia, ho provato il seguente codice per estrarre il testo del corpo:

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

e ricevo il seguente errore durante la creazione del progetto.

Errore 1 Il tipo 'System.Xml.XPath.IXPathNavigable' è definito in un assembly a cui non viene fatto riferimento. È necessario aggiungere un riferimento all'assembly 'System.Xml.XPath, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'. D: \ test \ test \ MainPage.xaml.cs 58

Devo aggiungere che ho aggiunto il riferimento System.Xml e ottengo ancora questo errore. Puoi per favore aiutarmi a capire di cosa si tratta? Grazie.

Risposta accettata

Grazie. Ho capito che dovevo aggiungere un riferimento a System.Xml.XPath dalla cartella Silverlight 4.0 disponibile nella cartella principale di Microsoft SDKs.


Risposta popolare

Con HAP sul telefono dovrai usare Linq2Xml per trovare contenuti nell'HTML analizzato. E potresti dover costruire la versione del telefono dalla fonte (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();
        }



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché