Erhalten von Text aus HTML auf WP7 mithilfe von HtmlAgilityPack

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

Frage

Ich versuche, Text aus HTML mit HtmlAgilityPack zu extrahieren. Ich habe HtmlAgilityPack erfolgreich zu meinem Projekt hinzugefügt. Ich habe jedoch den folgenden Code ausprobiert, um den Fließtext zu extrahieren:

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

und ich erhalte den folgenden Fehler beim Erstellen des Projekts.

Fehler 1 Der Typ 'System.Xml.XPath.IXPathNavigable' ist in einer Assembly definiert, auf die nicht verwiesen wird. Sie müssen der Assembly 'System.Xml.XPath, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' einen Verweis hinzufügen. D: \ test \ test \ HauptSeite.xaml.cs 58

Ich sollte hinzufügen, dass ich die System.Xml-Referenz hinzugefügt habe, und ich bekomme immer noch diesen Fehler. Können Sie mir bitte helfen, was dieses Problem? Vielen Dank.

Akzeptierte Antwort

Vielen Dank. Ich fand heraus, dass ich einen Verweis auf den System.Xml.XPath aus dem Silverlight 4.0-Ordner hinzufügen musste, der im übergeordneten Ordner von Microsoft SDKs verfügbar ist.


Beliebte Antwort

Mit HAP auf dem Telefon müssen Sie Linq2Xml verwenden, um Sachen im geparsten HTML zu finden. Und Sie müssen möglicherweise die Telefonversion von der Quelle (HAPPhone) aufbauen.

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



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum