2016-06-17 10 views
2

Dies ist meine Beispiel-HTML-Eingabe Teil der größeren HTML-Datei.HtmlAgilityPack Wählen Sie nur inneren Text Knoten

string html = "<html> <p>Ingredients:</p> </html>"; 

Ich möchte nur Knoten mit inneren Text Zutaten abzurufen. Zutaten können in HTML-Knoten p kommen, div, starke usw.

Code Meine C# dies mit HtmlAgility Pack und Linq zu erreichen ist

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 

List<HtmlNode> ingredientList = doc.DocumentNode.Descendants().Where 
         (x => x.InnerText.Contains("Ingredients:")).ToList(); 

Ergebnis dieses Code me 3 Knoten gibt

<html> node 
<p> node 
#text node 

ich abrufen möchten nur

<p> node 

Antwort

0

Wenn Ihre Plattform-Unterstützung XPath d.h HtmlAgilityPack der SelectNodes() Methode verfügbar ist, können Sie XPath-Ausdruck Element zu erhalten verwenden, wo eine seiner Direkt Kind Textknoten das Schlüsselwort enthält:

List<HtmlNode> ingredientList = doc.DocumentNode 
            .SelectNodes("//*[text()[contains(.,'Ingredients:')]]") 
            .ToList(); 
Verwandte Themen