Comment obtenir le contenu d'une chaîne HTML dans un tableau

c# c#-4.0 html html-agility-pack

Question

Je travaille avec du contenu HTML. Le format du HTML est comme ci-dessous.

<li>
  <ul>
     <li>Test1</li>
     <li>Test2</li>
  </ul>
  Odd string 1
  <ul>
     <li>Test3</li>
     <li>Test4</li>
  </ul>
  Odd string 2
  <ul>
     <li>Test5</li>
     <li>Test6</li>
  </ul>
<li>

Il peut y avoir plusieurs "chaînes étranges" dans le contenu HTML. Donc, je veux toute la "chaîne impaire" dans le tableau. Y a-t-il un moyen facile? (J'utilise C # et HtmlAgilityPack)

Réponse acceptée

Sélectionnez les éléments ul et référez-vous au prochain noeud frère qui sera votre texte:

HtmlDocument html = new HtmlDocument();
html.Load(html_file);
var odds = from ul in html.DocumentNode.Descendants("ul")
           let sibling = ul.NextSibling
           where sibling != null && 
                 sibling.NodeType == HtmlNodeType.Text && // check if text node
                 !String.IsNullOrWhiteSpace(sibling.InnerHtml)
           select sibling.InnerHtml.Trim();

Réponse populaire

quelque chose comme

MatchCollection matches = Regex.Matches(HTMLString, "</ul>.*?<ul>", RegexOptions.SingleLine);
foreach (Match match in matches)
{
    String oddstring = match.ToString().Replace("</ul>","").Replace("<ul>","");
}


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi