2012-04-01 82 views
5

我想清除我的RSS源中的HTML編碼。我無法解決如何設置下面的HTML編碼。從字符串中刪除HTML

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

您是否嘗試過使用'HtmlAgilityPack'庫?請查看http://htmlagilitypack.codeplex.com/discussions/225113 – Jack 2012-04-01 20:06:55

+0

OuterText或OuterHtml有你需要的嗎? – 2012-04-01 21:11:35

回答

17

只需使用下面的代碼:

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

這將清理的HTML只留下文字,所以「你好」

所以,你可以複製並使用此功能:

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

您的代碼將是這個樣子:

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

你能告訴我在哪裏可以把它放到我上面的代碼中嗎? – 2012-04-14 02:23:17

+0

我已使用您的原始代碼更新了我的回覆並附上了代碼示例 – 2012-04-14 08:53:32

+0

這不會刪除像「"」這樣的HTML實體。 – 2015-10-19 15:49:48

-3

使用下面的類工具:

HttpUtility.HtmlDecode(string); 

請不要沒有更多的是指這個答案。

+0

與上述代碼相關的用法和用法如何? – 2012-04-14 02:25:20

+0

@MichaelPeberdy:假設Description包含hTMNL標籤,那麼你可以使用下面的代碼去除HTML標籤HttpUtility.HtmlDecode(Description); – Mahantesh 2012-04-16 11:39:27

+0

hTMNL意味着什麼,並且'HttpUtility.HTMLDecode(string)'的目的是將HtmlEntities轉換回字符。你想要重點? – 2013-03-17 04:05:35