C#:如何以XML格式过滤字符串

时间:2018-01-29 07:50:08

标签: c# html xml

我有一个允许html格式存储在我的数据库中的字段。

public class MyItem {
    ....
    [AllowHtml]
    public string Description { get; set; }
    ....
}

不知何故,我想显示我的项目列表,但只显示前500个字符。

Description = new string(v.EventDescription.Take(500).ToArray()) + "...";

我意识到我从中获取了所有内容,包括p, img, h3, etc等所有xml标签。如何才能仅过滤p(段落)内的内容?

这是我的HTML结果:

<p style="text-align: center;">
    <img alt="" height="1200" src="/Content/Images/ContentImage/3a173930-d7ea-e711-a636-1c4d70ad76a8/wedding2.jpeg" width="1200"/>
</p>
<p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius est nisl, id ultrices purus posuere in. Nullam non elit faucibus, tempus orci id, convallis mi. Maecenas eget libero tortor. Proin dapibus massa quis erat condimentum, ut mollis sapien fringilla. Phasellus vitae porttitor nunc, sed laoreet lacus. Quisque convallis ...
    <span style="font-weight: bold;">Read more.</span>
</p>

注意:我需要从服务器端而不是从客户端执行此操作。

1 个答案:

答案 0 :(得分:0)

我不建议使用字符串操纵器来实现这一点, 在这种情况下,我更喜欢使用HtmlAgilityPack来解析数据,但是验证你的html是必要的。 像这样的东西。

descHtml = new string(v.EventDescription.ToArray());

if(validate(descHtml)){

  HtmlAgilityPack.HtmlDocument htmlDocument = new 
  HtmlAgilityPack.HtmlDocument();
  htmlDocument.LoadHtml(descHtml );
  var description = string.Join("{SEPARATOR}", 
  htmlDocument.DocumentNode.SelectNodes("/p/text()").Select(p => p.InnerText)); }