Comment puis-je extraire uniquement du texte du code HTML

J’ai l’obligation d’extraire tout le texte présent dans le du code HTML. Exemple d’entrée HTML: –

  title  

This is a big title.

How are doing you?

I am fine

Le résultat devrait être: –

 This is a big title. How are doing you? I am fine 

Je veux utiliser uniquement HtmlAgility à cette fin. Pas d’expressions régulières s’il vous plaît.

Je sais comment charger HtmlDocument puis en utilisant xquery comme ‘// body’, nous pouvons obtenir le contenu du corps. Mais comment puis-je supprimer le code HTML tel que je l’ai montré dans la sortie?

Merci d’avance 🙂

Vous pouvez utiliser InnerText du corps:

 ssortingng html = @"  title  

This is a big title.

How are doing you?

I am fine

"; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); ssortingng text = doc.DocumentNode.SelectSingleNode("//body").InnerText;

Ensuite, vous voudrez peut-être réduire les espaces et les nouvelles lignes:

 text = Regex.Replace(text, @"\s+", " ").Trim(); 

Notez cependant que, même si cela fonctionne dans ce cas, les balises telles que hello
world
ou helloworld seront converties par InnerText en helloworld , ce qui supprime les balises. Il est difficile de résoudre ce problème, car l’affichage est souvent déterminé par le CSS, pas seulement par le balisage.

Pourquoi ne pas utiliser l’expression XPath '//body//text()' pour sélectionner tous les nœuds de texte?

Normalement, pour l’parsing HTML, je recommanderais un parsingur HTML. Cependant, comme vous voulez supprimer toutes les balises html, une expression rationnelle simple devrait fonctionner.

Vous pouvez utiliser NUglify qui prend en charge l’extraction de texte à partir de HTML:

 var result = Uglify.HtmlToText("

This is a text

"); Console.WriteLine(result.Code); // prints: This is a text

Comme il utilise un parsingur personnalisé HTML5, il devrait être assez robuste (particulièrement si le document ne contient aucune erreur) et est très rapide (aucune expression rationnelle n’est impliquée, mais un parsingur de descente récursif pur, plus rapide que HtmlAgilityPack et plus compatible avec les règles de GC)