我有想要在飞行中修改的RSS源,我需要的只是文本(和换行符)所以其他一切都必须删除(所有图像,样式,链接)
如何使用ASP.NET c#
轻松完成此操作答案 0 :(得分:5)
Regex无法解析XML。不要使用正则表达式来解析XML。不要过去Go。不要收200英镑。
您需要一个合适的XML解析器。将RSS加载到XMLDocument,然后使用innerText仅获取文本内容。
请注意,即使您从RSS中提取了描述内容,它也可以包含活动HTML。那就是:
<description> <em>Fish</em> &amp; chips </description>
可以在正确解析为XML然后作为文本读取时为您提供文字字符串:
<em>Fish</em> & chips
或,标记:
鱼&amp;芯片
关于RSS的有趣之处在于你并不知道哪个是对的。在RSS 2.0中,它是明确的HTML标记(第二种情况);在其他版本中没有指定。通常,您应该假设描述可以包含实体编码的HTML标记,如果您想进一步从最终文本中删除它们,则需要进行第二次解析步骤。
(不幸的是,由于这是遗留的HTML而不是XML,因此难以解析;正则表达式将比解析XML更加无用。在.NET中没有内置的HTML解析器,但有第三方库,例如HTML Agility Pack。)
答案 1 :(得分:0)
string pattern = @"<(.|\n)*?>";
return Regex.Replace(htmlString, pattern, string.Empty);
答案 2 :(得分:0)
小心 - 你不想假设你收到的html格式正确:
public static string ClearHTMLTagsFromString(string htmlString)
{
string regEx = @"\<[^\<\>]*\>";
string tagless = Regex.Replace(htmlString, regEx, string.Empty);
// remove rogue leftovers
tagless = tagless.Replace("<", string.Empty).Replace(">", string.Empty);
return tagless;
}
答案 3 :(得分:0)
我在JavaScript中为一个项目做了与上面大致相同的事情:
var thisText = '';
thisText = document.getElementById('textToStrip').value;
var re = new RegExp('<(.|\\n)*?>', 'igm');
thisText = thisText.replace(re, '');