如何从字符串中删除命名的HTML标记和内容?

时间:2010-05-17 15:42:46

标签: c# html regex silverlight parsing

我试图理解一些例子,包括这里的问题,所以我很抱歉,如果这在我看来是重复的,但我找不到我能理解的RegularExpression。
我有一些HTML要使用XML解析器进行解析 - 但我想删除< head> < /头>来自此内容的标记,因为其余内容对于正常的XML解析而言足够有效。 标签< head>到< / head>必须删除它们的内容,以便外部HTML不受影响< body>标签等 这是包含我想删除的头HTML的部分供参考:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
    <head>
    <link rel="stylesheet" type="text/css" href="/style/stylesheet.css" />
    <meta name="description" content="Information" />
    <base target="_top">
</head>
<body>
<!-- Body Here -->
</body>
</html>

我还需要剥离DocType,如果可以使用RegEx完成,那就太棒了。头总是一样的 - 我想从&lt; head&gt;中删除到&lt; / head&gt;仅包含,如果可能,也从文本中删除DOCTYPE。

此外,这需要在Silverlight中工作并使用System.Text.RegularExpressions或类似工作。

3 个答案:

答案 0 :(得分:2)

HTML Agility Pack

正则表达式和HTML是一种罪恶......

答案 1 :(得分:1)

您可以使用string.Substring + string.IndexOf来提取正文XML元素。

代码应该是这样的:

MyHtml.Substring(sHtml.IndexOf("<body>"), sHtml.IndexOf("</body>") - sHtml.IndexOf("<body>") + 7);

答案 2 :(得分:1)

提取身体更容易 - 这是我正在使用的RegEx:

@"\<body\>(.*?)\</body\>"

现在我可以使用LINQ-to-XML来解析它了。