2009-09-08 8 views
4

Notre CMS permet aux utilisateurs de saisir du texte à l'aide d'un éditeur html, donc lecture d'un texte dans la page web je peux texte comme ceci:Strip tout, mais le texte du html

&#xD;&#xA;  <p>&#xD;&#xA;  <strong>text text. more 
text</strong>&#xD;&#xA;  <a href="http://blabla>blabla</a> even more text... 

Comment puis-je enlever tout mais le texte y compris, et . et des personnages similaires?

Répondre

6

supposer que ce soit html (non xhtml), j'utiliser le HTML Agility Pack pour l'analyser et l'accès InnerText:

static void Main() 
{ 
    HtmlDocument doc = new HtmlDocument(); 
    doc.LoadHtml(@"&#xD;&#xA;  <p>&#xD;&#xA;  <strong>text text. more text</strong>&#xD;&#xA;  <a href=""http://blabla>blabla</a> even more text..."); 
    string s = doc.DocumentNode.InnerText; 
    // s is: &#xD;&#xA;  &#xD;&#xA;  text text. more text&#xD;&#xA;  
} 
-1

Utilisez XML:

rootNode.innerText

Mais votre entrée doit être vérifié avant comme XML normalisé.

0

Vous pouvez le charger dans l'objet XDocument/XElement et obtenir la propriété Value, il vous retournera le texte intérieur de l'élément. Vous devrez faire cela pour chaque élément en utilisant l'énumération en profondeur de l'arborescence xml/html (et ajouter des espaces entre chaque nœud de texte interne).

  • <P>hello</P> vous obtiendrez « bonjour »
  • <P>hello</P><P>hello</P> vous obtiendrez « HelloHello » en utilisant rootNode.innerText - c'est pourquoi vous devez l'utiliser pour chaque noeud pour obtenir « bonjour bonjour ».
0

utilisation

var a = new Regex ("< [^>] + />?"); var v = a.Remplacer ("mon texte sale ici", "");

v contiendra désormais le texte sans les attributs et les balises.

0

J'utilise des expressions régulières pour filtrer HTML à partir d'une page Web pour récupérer uniquement le texte lui-même, comme ceci:

Regex.Replace(requestHtml, "<.*?>", string.Empty) 
Questions connexes