zoukankan      html  css  js  c++  java
  • 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原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    Kettle 实现mysql数据库不同表之间数据同步——实验过程
    Kettle ETL 来进行mysql 数据同步——试验环境搭建(表中无索引,无约束,无外键连接的情况)
    并查集知识总结
    c# 线程同步问题(about volatile)
    c# 线程的等待(堵塞)
    net中多线程返回值
    c# 中的 lock monitor mutex Semaphore 的比较
    c#两种同步结构
    links-some-blog
    T-SQL中的APPLY用法
  • 原文地址:https://www.cnblogs.com/newsea/p/2784337.html
Copyright © 2011-2022 走看看