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

C# 如何从字符串中删除命名的HTML标记和内容?,c#,html,regex,silverlight,parsing,C#,Html,Regex,Silverlight,Parsing,我试图理解一些例子,包括这里的问题,所以如果我觉得这是重复的,我道歉,但我找不到一个我能理解的常规表达方式。 我有一些HTML需要使用XML解析器进行解析,但我想从这些内容中去掉标记,因为其余的标记对于正常的XML解析足够有效。 必须删除要删除的标记及其内容,以便外部HTML不受标记等的影响。 这是一节,包括我想删除的头HTML,以供参考: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html

我试图理解一些例子,包括这里的问题,所以如果我觉得这是重复的,我道歉,但我找不到一个我能理解的常规表达方式。
我有一些HTML需要使用XML解析器进行解析,但我想从这些内容中去掉标记,因为其余的标记对于正常的XML解析足够有效。 必须删除要删除的标记及其内容,以便外部HTML不受标记等的影响。
这是一节,包括我想删除的头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,如果可以使用正则表达式来完成,那就太好了。标题总是一样的-我只想从中删除到包含,如果可能的话,还要从文本中删除DOCTYPE

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

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


正则表达式和HTML是一个sin…

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

代码应该是这样的:

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

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

代码应该是这样的:

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

提取正文更容易-下面是我使用的正则表达式:

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

现在我可以正常地用LINQ解析为XML了

提取主体更容易-以下是我使用的正则表达式:

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

现在我可以正常地用LINQ解析为XML了

我相信这是正常情况下的理想选择-但是比我需要的要多-只需要删除标签和内容一件事-只要删除头部标签之间的所有内容,以及头部标签本身-这就是我所需要的,除非性能至关重要,否则我仍然会使用HTML Agility pack,因为它更健壮。您还将发现,试图将HTML解析为XML的问题比您想象的要多(例如,chracter实体)。我确信这通常是理想的-但是远不止我需要的-只需要删除标记和内容一件事-只要删除头标记之间的所有内容,以及头标记本身-这就是我所需要的,除非性能至关重要,否则我仍然会使用HTML Agility pack,因为它更健壮。您还将发现,试图将HTML解析为XML的问题比您想象的要多(例如chracter实体)。从其余部分提取正文可能是正确的方法,谢谢!把尸体从其他地方取出来可能是正确的方法,谢谢!除非您控制HTML并确保其格式正确,
不一定存在。在这种情况下,HTML始终是相同的,但这是一个好的观点,即此元素可能不会在所有情况下都存在。除非您控制HTML并确保其格式正确,
不一定存在。在这种情况下,HTML始终是相同的,但这是一个很好的观点,即该元素可能并非在所有情况下都存在。