Normaliser l'espace dans HtmlAgilityPack

c# html-agility-pack xpath

Question

Voici l'extrait de code HTML. Comment obtenir du texte normalisé?

Pour rechercher le même fragment, mais en utilisant Xpath //*[normalize-space()='Text1 Text2']

<div>
    <div>
        <a></a>
        <a></a>
        <div><a><span></span>Text2</a></div>
    </div>
        <div>Text2</div>
</div>

En utilisant:

var htmlNodes = htmlDoc.DocumentNode.SelectNodes("*");

foreach (var node in htmlNodes)
{
   text += node.InnerText;
}

Je reçois cette chaîne:

"\r\n                        \r\n                        \r\n                        \r\n                        \r\n                        Text1\r\n                    Text2"

Puis-je obtenir un texte normal?

"Text1 Text2"

Réponse populaire

Vous pouvez utiliser la propriété InnerText place:

var texts = document.DocumentNode.Descendants("div").Select(n => n.InnerText);

Et combinez-les si vous voulez:

var combined = string.Join(" ", texts);

Pour filtrer les valeurs vides:

.Select(n => n.InnerText.Replace("\r\n", "")).Where(s => !string.IsNullOrEmpty(s));


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