忽略/跳过打开和关闭脚本标记和内容

时间:2015-02-13 17:12:34

标签: .net vb.net

我想请求帮助,为包含html标签的字符串编写一个小支票,并且还可以包含JavaScript标签。 我希望能够检查字符串并跳过标记内的任何内容:

<script>ignore whatever within</script>

我正在从额外的空格,制表符和换行符中删除html,而某些html具有内联JavaScript,这不是理想的,但现在我必须解决它。

这是一个示例,一个适度的方法,我想添加新的检查:

Public Shared Function MinifyStringContent(ByVal strContent As String) As String
    Dim rtnStringContent As String = ""
    If Not IsNothing(strContent) AndAlso strContent <> "" Then
        rtnStringContent = strContent.ToString.Replace(vbCrLf, "").Replace("  ", " ").Replace(vbTab, "")
    End If
    Return rtnStringContent.Trim()
End Function

我可以通过将其添加到现有代码来了解如何执行此操作吗?

感谢您的帮助。


我正在尝试安装web.optimization包,但安装会回滚。我明白了:

安装失败。回滚......

Install-Package:项目不可用。

在行:1个字符:16 + Install-Package&lt;&lt;&lt;&lt; Microsoft.AspNet.Web.Optimization

  • CategoryInfo:NotSpecified:(:) [Install-Package],COMException

  • FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

关于如何解决此问题的任何想法?

谢谢。


我改变了我的方法以使用HtmlAgilityPack。 这是新代码:

    Public Shared Function MinifyStringContent(ByVal strContent As String) As String
    Dim doc As New HtmlAgilityPack.HtmlDocument
    doc.Load(strContent)
    If Not IsNothing(strContent) AndAlso strContent <> "" Then
        For Each textnode In doc.DocumentNode.SelectNodes("//text()")
            If Not textnode.ParentNode.Name = "script" Then
                textnode.InnerHtml = textnode.InnerText.Replace(vbCrLf, "").Replace("  ", " ").Replace(vbTab, "")
            End If
        Next
    End If
    Return doc.DocumentNode.OuterHtml
End Function

但是这部分代码中断了:

doc.Load(strContent)   

错误内容为:路径中的字符非法。

从BasePage.vb中的Render方法调用该方法:

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
    Dim stringWriter As System.IO.StringWriter = New System.IO.StringWriter
    Dim htmlWriter As HtmlTextWriter = New HtmlTextWriter(stringWriter)

    MyBase.Render(htmlWriter)
    Dim html As String = stringWriter.ToString()
    html = Functions.MinifyStringContent(html)
    writer.Write(html)
End Sub

有人可以帮我识别我做错了什么吗?

非常感谢。

0 个答案:

没有答案