如何解决从字符串中去除xml和html
| 我有一个字符串,需要从其中删除所有HTML和XML。我对正则表达式不太满意。对于HTML,我发现了一些非常有用的代码:snippet = Regex.Replace(snippet,\"<.*?>\",\"\");
目前,我正在针对XML执行此操作:
while (snippet.IndexOf(\"<xml>\") != -1)
{
int startLoc = snippet.IndexOf(\"<xml>\");
int endLoc = snippet.IndexOf(\"</xml>\");
snippet = snippet.Remove(startLoc,(endLoc - startLoc) + 6);
}
while (snippet.IndexOf(\"<style>\") != -1)
{
int startLoc = snippet.IndexOf(\"<style>\");
int endLoc = snippet.IndexOf(\"</style>\");
snippet = snippet.Remove(startLoc,(endLoc - startLoc) + 8);
}
// only required for chrome and IE
// removes - <object classid=\"clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D\" id=\"ieooui\">
while (snippet.IndexOf(\"<object\") != -1)
{
int startLoc = snippet.IndexOf(\"<object\");
int endLoc = snippet.IndexOf(\"id=\\\"ieooui\\\">\");
snippet = snippet.Remove(startLoc,(endLoc - startLoc) + 12);
}
// removes - <object id=\"ieooui\" classid=\"clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D\">
while (snippet.IndexOf(\"<object\") != -1)
{
int startLoc = snippet.IndexOf(\"<object\");
int endLoc = snippet.IndexOf(\"classid=\\\"clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D\\\"\");
snippet = snippet.Remove(startLoc,(endLoc - startLoc) + 52);
}
这很不整洁。有人可以请我也为xml建议一个正则表达式,尤其是:
<object id=\"ieooui\" classid=\"clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D\">
和
<object classid=\"clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D\" id=\"ieooui\">
万分感谢。解决方法
通常,您无法通过regexp解析HTML。好吧,从技术上讲您可以,但是正如您所说的那样,它是“不统一的”。该任务通常是通过使用SAX解析器来完成的。
甚至没有使用HTML / XML标记生成器。像这样的http://www.codeproject.com/KB/recipes/HTML_XML_Scanner.aspx
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。