Htmlagilitypack - Récupère tout le texte + les liens à l'intérieur du texte

c# html-agility-pack

Question

J'ai une méthode qui extrait des blocs de texte contenant plus de XX mots. Le problème est qu'il ne renverra pas de liens à l'intérieur de ce texte.

Ma méthode:

public string getAllTextHTML(string _html)
{
  string _allText = "";
  try
  {
    HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
    document.LoadHtml(_html);

    document.DocumentNode.Descendants()
      .Where(n => n.Name == "script" || n.Name == "style")
      .ToList()
      .ForEach(n => n.Remove());

    RemoveComments(document.DocumentNode);

    var root = document.DocumentNode;
    var sb = new StringBuilder();
    foreach (var node in root.DescendantNodesAndSelf())
    {
      if (!node.HasChildNodes)
      {
        string text = node.InnerHtml;

        if (!string.IsNullOrEmpty(text))
        {
          int antalOrd = WordCounting.CountWords1(text);

          if (antalOrd > 25)
          {
            text = System.Web.HttpUtility.HtmlDecode(text);
            sb.AppendLine(text.Trim());
          }  
        } 
      }
    }

    _allText = sb.ToString();
  }
  catch (Exception)
  {
  }

  _allText = System.Web.HttpUtility.HtmlDecode(_allText);
  return _allText;
}

Comment est-ce que je pourrais faire ceci aussi me faire les liens dans le texte?

Réponse populaire

Je suppose que la ligne suivante pose un problème:

if (!node.HasChildNodes)

car link (anchor) est une balise htlm et vous excluez les balises html qui ont une balise anchor comme enfant

Voici un exemple simple qui renvoie un lien:

if (!node.HasChildNodes)



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