⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sliceparser.class.asp

📁 一个很好的asp cms管理系统
💻 ASP
字号:
<%
Class SliceParser
    Private XMLPath, XMLDoc, XMLRoot, XMLNode, TParser
    Private NodeCommand, CommandType, CommandTable
    Public Version, Author, CreateTime, Description

    Private Sub Class_Initialize
        On Error Resume Next
        Set XMLDoc = Server.CreateObject(Cfg.XMLObject_Name)
        XMLDoc.async = FALSE
        XMLDoc.resolveExternals = FALSE
        If Err.Number<>0 And XMLDoc Is Nothing Then
            Response.Write "<font color=""red"">“" & Cfg.XMLObject_Name & "”无法创建</font>"
            Response.End
        End If

        Set TParser = New TagParser

    End Sub

    Public Function Compile(XMLval)

        If XMLval = "" Or IsNUll(XMLval) Then
            Compile = ""
            Exit Function
        End If

        If Not XMLDoc.loadXML(XMLval) Then
            Compile = ""
            Exit Function
        End If
        Set XMLRoot = XMLDoc.documentElement

        Set XMLNode = XMLRoot.selectSingleNode("/slice")
        Version = XMLNode.getAttribute("version")
        Set XMLNode = XMLRoot.selectSingleNode("/slice/author")
        Author = XMLNode.text
        Set XMLNode = XMLRoot.selectSingleNode("/slice/createtime")
        CreateTime = XMLNode.text
        Set XMLNode = XMLRoot.selectSingleNode("/slice/description")
        Description = XMLNode.text

        Set NodeCommand = XMLRoot.selectSingleNode("/slice/command")
        CommandType = NodeCommand.getAttribute("type")
        CommandTable = NodeCommand.getAttribute("table")

        Dim strResult
        Select Case CommandType & "_" & CommandTable
            Case "loop_view_resource"
                Compile = loop_view_resource()
            Case Else
                Compile = ""
        End Select

    End Function

    Private Function loop_view_resource()
        Dim I, strCode, Sql, Rs, sqlWhere, tmpSql
        Dim pTop, pClassList, pSpecialList, pIdList, pOrderBy
        Dim strHtml, tmpHtml

        Set XMLNode = NodeCommand.selectSingleNode("./parameter")
        If XMLNode.getAttribute("type") = "custome" Then
            Set XMLNode = NodeCommand.selectSingleNode("./parameter/sql")
            Sql = XMLNode.text
        Else
            Sql = "SELECT $TOP$ * FROM view_resource WHERE $WHERE$ ORDER BY $ORDER$"
            sqlWhere = "1<>2"

            ''处理频道列表
            Set XMLNode = NodeCommand.selectNodes("./parameter/class_list/item")
            If Not XMLNode Is Nothing Then
                Dim myNode, IdList, ChildIdlist
                For I = 0 To XMLNode.Length-1
                    ChildIdlist = ""
                    Set myNode = XMLNode.item(I)
                    If myNode.getAttribute("child") = 1 Then
                        ChildIdlist = FLib.ChildenList(myNode.text)
                    End If
                    If ChildIdlist <> "" Then
                        ChildIdlist = ChildIdlist & ","
                    End If
                    ChildIdlist = ChildIdlist & myNode.text
                    If IdList <> "" Then
                        IdList = IdList & ","
                    End If
                    IdList = IdList & ChildIdlist
                Next

                If IdList<> "" Then
                    sqlWhere = sqlWhere & " AND class_id IN (" & IdList & ")"
                End If
            End If

            ''处理Top参数
            Set XMLNode = NodeCommand.selectSingleNode("./parameter/top")
            If XMLNode Is Nothing Then
                pTop = ""
            Else
                pTop = " TOP " & XMLNode.text
            End If

            ''处理特性列表
            tmpSql = ""
            Set XMLNode = NodeCommand.selectNodes("./parameter/special_list/item")
            If Not XMLNode Is Nothing Then
                For I = 0 To XMLNode.Length-1
                    Set myNode = XMLNode.item(I)
                    If tmpSql <> "" Then
                        tmpSql = tmpSql & " OR"
                    End If
                    tmpSql = tmpSql & " INSTR(',' + special + ',', '," & myNode.text & ",') <> 0"
                Next

                If tmpSql <> "" Then
                    sqlWhere = sqlWhere & " AND (" & tmpSql & " )"
                End If
            End If

            ''处理字段
            tmpSql = ""
            Set XMLNode = NodeCommand.selectNodes("./parameter/filed_list/item")
            If Not XMLNode Is Nothing Then
                For I=0 To XMLNode.Length-1
                    Set myNode = XMLNode.item(I)
                    If tmpSql <> "" Then
                        tmpSql = tmpSql & " OR"
                    End If
                    Select Case myNode.getAttribute("type")
                        Case "equal":
                            tmpSql = tmpSql & " " & myNode.getAttribute("name") & " = " & myNode.text
                        Case "like":
                            tmpSql = tmpSql & " " & myNode.getAttribute("name") & " LIKE " & myNode.text
                        Case "in":
                            tmpSql = tmpSql & " " & myNode.getAttribute("name") & " IN " & myNode.text
                    End Select
                Next

                If tmpSql <> "" Then
                    sqlWhere = sqlWhere & " AND (" & tmpSql & " )"
                End If
            End If
            
            ''处理排序参数
            Set XMLNode = NodeCommand.selectNodes("./parameter/orderby/item")
            If Not XMLNode Is Nothing Then
				For I=0 To XMLNode.Length-1
					Set myNode = XMLNode.item(I)
                    If pOrderBy <> "" Then
                        pOrderBy = pOrderBy & ","
                    End If
					pOrderBy = pOrderBy & " " & myNode.text
                    If myNode.getAttribute("method") = "desc" Then
                        pOrderBy = pOrderBy & myNode.getAttribute("name") & " DESC"
					Else
						pOrderBy = pOrderBy & myNode.getAttribute("name") & " ASC"
                    End If
				Next
			Else
				pOrderBy = "addtime DESC"
			End If

            ''替换Sql
            Sql = Replace(Sql, "$TOP$", pTop)
            Sql = Replace(Sql, "$WHERE$", sqlWhere)
					If pOrderBy = "" Then
                        pOrderBy = "addtime DESC"
                    End If
            Sql = Replace(Sql, "$ORDER$", pOrderBy)

		End If
            Set Rs = Db.ExeCute(Sql)

            If Rs.Eof And Rs.Bof Then
                Set XMLNode = NodeCommand.selectSingleNode("./body/empty")
                If XMLNode Is Nothing Then
                    strHtml = ""
                Else
                    strHtml = XMLNode.text
                End If
            Else
                Dim StartNum, EndNum, oddrowHtml, evenrowHtml, defaultHtml, rowTemplate
                StartNum = EndNum = 0
                Set XMLNode = NodeCommand.selectSingleNode("./body/loop")
                If Not XMLNode Is Nothing Then

                    StartNum        = CInt(XMLNode.getAttribute("start"))
                    EndNum          = CInt(XMLNode.getAttribute("end"))
                    oddrowHtml      = XMLNode.selectSingleNode("oddrow").text
                    evenrowHtml     = XMLNode.selectSingleNode("evenrow").text
                    defaultHtml     = XMLNode.selectSingleNode("default").text
                    rowTemplate     = ""
                    strHtml         = ""
                    I = 0

                    While Not Rs.Eof
                        I = I+1
                        If I >= StartNum And I <= EndNum Then
                            If I Mod 2 = 0 Then
                                rowTemplate = oddrowHtml
                            Else
                                rowTemplate = evenrowHtml
                            End If

                            If rowTemplate = "" Then
                                rowTemplate = defaultHtml
                            End If
                            strHtml = strHtml & TParser.Parser(Rs, rowTemplate)
                        End If
                        Rs.MoveNext
                    Wend

                Else
                    strHtml = ""
                End If
            End If
            Rs.Close()
            strHtml =  NodeCommand.selectSingleNode("./body/head").text & strHtml & NodeCommand.selectSingleNode("./body/foot").text

        loop_view_resource = strHtml

    End Function

    ''注消类
    Private Sub Class_Terminate
        Set XMLDoc = Nothing
        Set TParser = Nothing
    End Sub

End Class

%>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -