C# 如何在HTML头中查找和删除CSS引用?

C# 如何在HTML头中查找和删除CSS引用?,c#,asp.net,html,css,.net-4.0,C#,Asp.net,Html,Css,.net 4.0,我已经创建了一个服务来加入、缩小和压缩CMS系统上的css引用。例如: 之前: <link href="/Files/css1.css" rel="stylesheet" type="text/css"/> <link href="/Files/css2.css" rel="stylesheet" type="text/css"/> <link href="/Files/css3.css" rel="stylesheet" type="text/css" media

我已经创建了一个服务来加入、缩小和压缩CMS系统上的css引用。例如:

之前:

<link href="/Files/css1.css" rel="stylesheet" type="text/css"/>
<link href="/Files/css2.css" rel="stylesheet" type="text/css"/>
<link href="/Files/css3.css" rel="stylesheet" type="text/css" media="all"/>

现在你可以写:

<link href="/min.ashx?files=/Files/css1.css,/Files/css2.css,/Files/css3.css" rel="stylesheet" type="text/css" />

我的下一个任务是自动获取head部分中的所有引用,并用一行替换它们,如示例所示

我只应替换这些规则中的以下内容:

  • Href以“/Files/”开头,以避免尝试加载外部
  • 只应包括属性为media或media=“all”的css文件,因为生成的css文件只有一个设置
我可以访问该页面的原始html,但仍然无法成功地定位引用,不知道是否应该解析为xml或使用regex等

有人能给我指出正确的方向吗?

使用。粗略的攻击计划:

  • 将html内容加载到HtmlDocument对象中

  • 通过XPath查找HtmlDocument对象中的链接节点

    var nodes=doc.DocumentBody.SelectNodes(“//head/link[@type='text/css']”)

  • 从这些节点检索HREF

    string href=节点[0]。属性[“href]”。值

  • 然后用新节点替换节点


  • 您可以找到与正则表达式规则匹配的链接:

    <link href="(/Files/[^"]+)" .* media
    

    由于这个包已经在解决方案中,我现在正在研究这个问题。看起来很有希望
    
    @"<link href=""(/Files/[^""]+)"" .* media"