• Vs宏 之 整理HTML文档格式


    有时从其它HTML编辑器得到的 HTML 是非标准的。一些标签没有闭合。不影响功能,但VS会提示不正确,而且,不能正常的缩进。如: input , br ,meta .

    以下宏做两件事情:

    1. 修正没有闭合的标签

    2.把编码转为 UTF8

     其中:宏所引用的Dll路径: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies

     取得解决方案选中项: 

    DirectCast(DTE.SelectedItems.Item(1).ProjectItem, EnvDTE.ProjectItem).Properties.Item("FullPath").Value

        '补全自闭合标签。像 input br meta
        Sub TidyHtmlSolo()
    
            For i As Integer = 1 To DTE.SelectedItems.Count
                Dim fileName = DirectCast(DTE.SelectedItems.Item(i).ProjectItem, EnvDTE.ProjectItem).Properties.Item("FullPath").Value
    
    
                If (System.IO.Directory.Exists(fileName)) Then
    
                    Dim fs = System.IO.Directory.GetFiles(fileName, "*.aspx", SearchOption.AllDirectories)
    
                    For j As Integer = 0 To fs.Length - 1
    
                        TidyOneHtmlSolo(fs(j))
    
                    Next
                ElseIf (System.IO.File.Exists(fileName)) Then
                    TidyOneHtmlSolo(fileName)
                Else
                    MsgBox("找不到文件:" + fileName)
                    Exit Sub
                End If
    
            Next
        End Sub
    
        Function TidyOneHtmlSolo(ByVal fileName As String)
            If (File.Exists(fileName) = False) Then
                MsgBox("找不到文件:" + fileName)
                Exit Function
            End If
    
            Dim txt = File.ReadAllText(fileName, System.Text.Encoding.Default)
    
            Dim html = New HtmlCharLoad(txt)
            Dim list = html.Load(HtmlNodeProc.ProcType.None)
    
    
            For i As Integer = 0 To list.Count - 1
                Dim o = list(i)
                If o.Type = HtmlNode.NodeType.Tag Then
                    Dim tag = CType(o, HtmlTagNode)
                    If tag.TagName.ToLower().IsIn(New String() {"input", "br", "meta", "link"}) Then
                        If (tag.IsSole = False And i < list.Count - 1) Then
                            Dim n = list(i + 1)
                            If (n.Type <> HtmlNode.NodeType.CloseTag) Then
                                tag.IsSole = True
                            End If
                        End If
                    End If
                End If
            Next
    
    
            File.WriteAllText(fileName, String.Join("", list.Select(Function(a) a.ToString()).ToArray()), System.Text.Encoding.UTF8)
        End Function
    
    
    alarm   作者:NewSea     出处:http://newsea.cnblogs.com/    QQ,MSN:iamnewsea@hotmail.com

      如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    零是奇数还是偶数?
    解决TortoiseSVN中out of date问题的一个方法
    squid透明代理+iptables防火墙,多网卡详细配置
    基于协同过滤的推荐方法
    IP分片和TCP分片 MTU和MSS(转)
    Google Protocol Buffer 的使用和原理(转)
    到底多少线程算是线程数太多?
    开源软件53个相关概念
    GPL,LGPL和BSD等协议注意事项
    IEEE 802
  • 原文地址:https://www.cnblogs.com/newsea/p/2784337.html
Copyright © 2020-2023  润新知