2010-09-13 3 views
1

J'ai un noeud html:Comment supprimer l'espace insignifiant dans un noeud XmlNodeType.Text?

<p>Line1 
Line2 
Line 
ThereAreTwoSpacesAfterThis ThereAreTwoSpacesBeforeThis 
</p> 

Dans un navigateur, le résultat de l'utilisation finale est

Line1 Line2 Line ThereAreTwoSpacesAfterThis ThereAreTwoSpacesBeforeThis 

qui est le résultat que je veux.

Alors, comment supprimer l'espace insignifiant dans un nœud XmlNodeType.Text (C#)?

============================================== ===========

Salut les gars, Merci pour votre réponse.

En fait, je travaille sur un petit projet pour extraire tout le texte d'une page web (html): quelque chose comme "Enregistrer sous la page en tant que fichier texte" de Firefox ou IE.

J'ai essayé d'utiliser Html Agility Pack, mais le résultat n'est pas assez bon.

J'ai également essayé d'utiliser un contrôle WebBrowser, mais il semble trop lent, et il n'est pas si facile de le contrôler.

Des bonnes idées? Je comprends que les gars me suggèrent d'utiliser regex, mais il y a trop de cas à méditer.

+0

Whoa, grandes exigences de changement de graisse. Votre question était initialement * seulement * sur le texte à l'intérieur d'une balise 'p' et * seulement * sur la suppression des espaces. Maintenant, vous demandez comment * rendre une page HTML entière en texte brut * ?! Vraisemblablement, vous voulez aussi qu'il interprète correctement la propriété CSS 'white-space', qui contrôle l'effondrement de l'espace blanc, sur chaque élément? Vous êtes sur la première étape pour écrire un moteur de rendu HTML fullblown. – Timwi

+0

Vous avez raison. Désolé pour la confusion. J'ai googlé et cherché beaucoup sur la conversion de HTML en texte brut, mais pas de chance. Tout ce que j'ai à faire est d'utiliser Html Agility Pack, ce qui ne me suffit pas. Merci. –

Répondre

1

Just use a regular expression!

var spacesSquashed = Regex.Replace(input, @"\s+", " ", RegexOptions.Singleline); 

Si vous souhaitez également supprimer tous les espaces au début et à la fin, comme il est d'usage en HTML, ajoutez une .Trim() supplémentaire à la fin.

+0

Tenté d'upvote parce que vous avez inclus cette citation :) Pour cette utilisation spécifique, je suppose que regex est correct ... –

+0

S'il vous plaît voir ma question mise à jour. Merci pour votre réponse. –

Questions connexes