2010-12-05 7 views
4

Ich möchte den Inhalt einer geordneten Liste von einer HTML-Seite mit HTMLAgilityPack in C# abrufen, ich habe den folgenden Code versucht, aber das funktioniert nicht, kann jemand helfen, ich möchte HTML-Text übergeben und den Inhalt der ersten erhalten geordnete Liste in den hTML-Code gefundenWie bekomme ich den Inhalt eines HTML-Elements mit HtmlAgilityPack in C#?

private bool isOrderedList(HtmlNode node) 
{ 
    if (node.NodeType == HtmlNodeType.Element) 
    { 
     if (node.Name.ToLower() == "ol") 
      return true; 
     else 
      return false; 
    } 
    else 
     return false; 
} 

public string GetOlList(string htmlText) 
{ 
    string s=""; 
    HtmlDocument doc = new HtmlDocument(); 
    doc.LoadHtml(htmlText); 
    HtmlNode nd = doc.DocumentNode; 
    foreach (HtmlNode node in nd.ChildNodes) 
    { 
     if (isOrderedList(node)) 
     { 
      s = node.WriteContentTo(); 
      break; 
     } 
     else if (node.HasChildNodes) 
     { 
      string sx= GetOlList(node.WriteTo()); 
      if (sx != "") 
      { 
       s = sx; 
       break; 
      } 
     } 
    } 
    return s; 
} 

Antwort

3

der folgende Code für mich gearbeitet

public static string GetComments(string html) 
{ 
    HtmlDocument doc = new HtmlDocument(); 
    doc.LoadHtml(html); 
    string s = ""; 
    foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//ol")) 
    { 
     s += node.OuterHtml; 
    } 

    return s; 
} 
2

Wie wäre:

var el = (HtmlElement)doc.DocumentNode 
    .SelectSingleNode("//ol"); 
if(el!=null) 
{ 
    string s = el.OuterHtml; 
} 

(ungetestet, aus dem Gedächtnis)

+0

Schöne Antwort. Wählte UP – koolprasad2003

Verwandte Themen