2012-04-01 12 views
5

Próbuję usunąć kodowanie HTML z mojego kanału RSS. Nie mogę się dowiedzieć, jak ustawić poniższy kod, aby usunąć kodowanie HTML.Usuń HTML z ciągu znaków

var rssFeed = XElement.Parse(e.Result); 

var currentFeed = this.DataContext as app.ViewModels.FeedViewModel; 
var items = from item in rssFeed.Descendants("item")        
      select new ATP_Tennis_App.ViewModels.FeedItemViewModel() 
      { 

       Title = item.Element("title").Value, 
       DatePublished = DateTime.Parse(item.Element("pubDate").Value), 
       Url = item.Element("link").Value, 
       Description = item.Element("description").Value 
      }; 

foreach (var item in items) 
    currentFeed.Items.Add(item); 
+2

Czy próbowałeś użyć biblioteki 'HtmlAgilityPack'? sprawdź http://htmlagilitypack.codeplex.com/discussions/225113 – Jack

+0

Czy OuterText lub OuterHtml mają to, czego potrzebujesz? –

Odpowiedz

17

Wystarczy użyć następującego kodu:

var withHtml = "<p>hello <b>there</b></p>"; 
var withoutHtml = Regex.Replace(withHtml, "<.+?>", string.Empty); 

Będzie to wyczyścić html pozostawiając tylko tekst, więc „witam”

Tak, można po prostu skopiować i używać tej funkcji:

string RemoveHtmlTags(string html) { 
    return Regex.Replace(html, "<.+?>", string.Empty); 
} 

Twój kod będzie wyglądać mniej więcej tak:

var rssFeed = XElement.Parse(e.Result); 
var currentFeed = this.DataContext as app.ViewModels.FeedViewModel; 
var items = from item in rssFeed.Descendants("item")        
      select new ATP_Tennis_App.ViewModels.FeedItemViewModel() 
      { 

       Title = RemoveHtmlTags(item.Element("title").Value), 
       DatePublished = DateTime.Parse(item.Element("pubDate").Value), 
       Url = item.Element("link").Value, 
       Description = RemoveHtml(item.Element("description").Value) 
      }; 
+0

Czy możesz mi powiedzieć, gdzie mogę umieścić to w powyższym kodzie? –

+0

Zaktualizowałem moją odpowiedź próbką kodu przy użyciu oryginalnego kodu –

+0

Nie spowoduje to usunięcia elementów HTML takich jak '"' i innych. –

-3

Użyj następujące klasy użytkowy:

HttpUtility.HtmlDecode(string); 

proszę nie dotyczą tej odpowiedzi nie ma.

+0

Gdzie i jak jest to używane w odniesieniu do powyższego kodu? –

+0

@MichaelPeberdy: Załóżmy, że opis zawiera znaczniki hTMNL, następnie możesz użyć następującego kodu do usunięcia znaczników HTML HttpUtility.HtmlDecode (Description); – Mahantesh

+0

hTMNL nic nie znaczy, a 'HttpUtility.HTMLDecode (string)' celem jest konwersja HtmlEntities z powrotem na znaki. Chcesz punktów rep? –

Powiązane problemy