2010-12-05 47 views
4

Je veux obtenir le contenu d'une liste ordonnée d'une page HTML using HTMLAgilityPack en C#, j'ai essayé le code suivant mais, ceci ne fonctionne pas n'importe qui peut aider, je veux passer le texte html et obtenir le contenu du premier liste ordonnée trouvé dans le code HTMLComment obtenir le contenu d'un élément HTML en utilisant HtmlAgilityPack en 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; 
} 

Répondre

3

le code suivant a fonctionné pour moi

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

Que diriez-vous:

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

(non testé, de la mémoire)

+0

Bonne réponse. Voté UP – koolprasad2003