asp源码打包成xml的工具

时间:2022-09-25 20:10:47

下边这个存为Pack.asp,打包文件时运行 

复制代码代码如下:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>  
<%OptionExplicit%>  
<%OnErrorResumeNext%>  
<% Response.Charset="UTF-8"%>  
<% Server.ScriptTimeout=99999999%>  
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<htmlxmlns="http://www.w3.org/1999/xhtml">  
<head>  
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>  
<title>文件打包程序</title>  
</head>  

<body>  
<%  


Dim ZipPathDir, ZipPathFile  
Dim startime, endtime  
'在此更改要打包文件夹的路径  
ZipPathDir ="F:\www.yongfa365.com"'  
ZipPathFile ="update.xml"  
If Right(ZipPathDir,1)<>"\"Then ZipPathDir = ZipPathDir&"\"  
'开始打包  
CreateXml(ZipPathFile)  
'遍历目录内的所有文件以及文件夹  

Sub LoadData(DirPath)  
Dim XmlDoc  
    Dim fso 'fso对象  
Dim objFolder '文件夹对象  
Dim objSubFolders '子文件夹集合  
Dim objSubFolder '子文件夹对象  
Dim objFiles '文件集合  
Dim objFile '文件对象  
Dim objStream  
    Dim pathname, TextStream, pp, Xfolder, Xfpath, Xfile, Xpath, Xstream  
    Dim PathNameStr  
    response.Write("=========="&DirPath&"==========<br>")  
Set fso = server.CreateObject("scripting.filesystemobject")  
Set objFolder = fso.GetFolder(DirPath)'创建文件夹对象  

    Response.Write DirPath  
    Response.flush  

    Set XmlDoc = Server.CreateObject("Microsoft.XMLDOM")  
    XmlDoc.load Server.MapPath(ZipPathFile)  
    XmlDoc.async =False  

'写入每个文件夹路径  
Set Xfolder = XmlDoc.SelectSingleNode("//root").AppendChild(XmlDoc.CreateElement("folder"))  
Set Xfpath = Xfolder.AppendChild(XmlDoc.CreateElement("path"))  
    Xfpath.text = Replace(DirPath, ZipPathDir,"")  
Set objFiles = objFolder.Files  
    ForEach objFile in objFiles  
        If LCase(DirPath & objFile.Name)<> LCase(Request.ServerVariables("PATH_TRANSLATED"))Then  
            Response.Write "---<br/>"  
            PathNameStr = DirPath &""& objFile.Name  
            Response.Write PathNameStr &""  
            Response.flush  
            '================================================  
'写入文件的路径及文件内容  
Set Xfile = XmlDoc.SelectSingleNode("//root").AppendChild(XmlDoc.CreateElement("file"))  
Set Xpath = Xfile.AppendChild(XmlDoc.CreateElement("path"))  
            Xpath.text = Replace(PathNameStr, ZipPathDir,"")  
'创建文件流读入文件内容,并写入XML文件中  
Set objStream = Server.CreateObject("ADODB.Stream")  
            objStream.Type=1  
            objStream.Open()  
            objStream.LoadFromFile(PathNameStr)  
            objStream.position =0  

Set Xstream = Xfile.AppendChild(XmlDoc.CreateElement("stream"))  
            Xstream.SetAttribute "xmlns:dt","urn:schemas-microsoft-com:datatypes"  
'文件内容采用二制方式存放  
            Xstream.dataType ="bin.base64"  
            Xstream.nodeTypedValue = objStream.Read()  

Set objStream =Nothing  
Set Xpath =Nothing  
Set Xstream =Nothing  
Set Xfile =Nothing  
'================================================  
EndIf  
Next  
    Response.Write "<p>"  
    XmlDoc.Save(Server.Mappath(ZipPathFile))  
Set Xfpath =Nothing  
Set Xfolder =Nothing  
Set XmlDoc =Nothing  

'创建的子文件夹对象  
Set objSubFolders = objFolder.SubFolders  
    '调用递归遍历子文件夹  
ForEach objSubFolder in objSubFolders  
        pathname = DirPath & objSubFolder.Name &"\"  
        LoadData(pathname)  
Next  
Set objFolder =Nothing  
Set objSubFolders =Nothing  
Set fso =Nothing  

EndSub  



'创建一个空的XML文件,为写入文件作准备  

Sub CreateXml(FilePath)  
'程序开始执行时间  
    startime = Timer()  
Dim XmlDoc, Root  
    Set XmlDoc = Server.CreateObject("Microsoft.XMLDOM")  
    XmlDoc.async =False  
Set Root = XmlDoc.createProcessingInstruction("xml","version='1.0' encoding='UTF-8'")  
    XmlDoc.appendChild(Root)  
    XmlDoc.appendChild(XmlDoc.CreateElement("root"))  
    XmlDoc.Save(Server.MapPath(FilePath))  
Set Root =Nothing  
Set XmlDoc =Nothing  
    LoadData(ZipPathDir)  
'程序结束时间  
    endtime = Timer()  
    response.Write("页面执行时间:"& FormatNumber((endtime - startime),3)&"秒")  
EndSub  


%>  
</body>  
</html> 


下边这个存为Install.asp,安装XML打包文件时运行 

复制代码代码如下:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>  
<%OptionExplicit%>  
<%OnErrorResumeNext%>  
<% Response.Charset="UTF-8"%>  
<% Server.ScriptTimeout=99999999%>  
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<htmlxmlns="http://www.w3.org/1999/xhtml">  
<head>  
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>  
<title>文件解包程序</title>  
</head>  

<body>  
<%  
Dim strLocalPath  
'得到当前文件夹的物理路径  
strLocalPath = Left(Request.ServerVariables("PATH_TRANSLATED"), InStrRev(Request.ServerVariables("PATH_TRANSLATED"),"\"))  

Dim objXmlFile  
Dim objNodeList  
Dim objFSO  
Dim objStream  
Dim i, j  

Set objXmlFile = Server.CreateObject("Microsoft.XMLDOM")  
objXmlFile.load(Server.MapPath("update.xml"))  

If objXmlFile.readyState =4Then  
If objXmlFile.parseError.errorCode =0Then  

Set objNodeList = objXmlFile.documentElement.selectNodes("//folder/path")  
Set objFSO = CreateObject("Scripting.FileSystemObject")  

        j = objNodeList.Length -1  
For i =0To j  
            If objFSO.FolderExists(strLocalPath & objNodeList(i).text)=FalseThen  
                objFSO.CreateFolder(strLocalPath & objNodeList(i).text)  
EndIf  
            Response.Write "创建目录"& objNodeList(i).text &"<br/>"  
            Response.Flush  
        Next  
Set objFSO =Nothing  
Set objNodeList =Nothing  
Set objNodeList = objXmlFile.documentElement.selectNodes("//file/path")  

        j = objNodeList.Length -1  
For i =0To j  
            Set objStream = CreateObject("ADODB.Stream")  
With objStream  
                .Type=1  
.Open  
                .Write objNodeList(i).nextSibling.nodeTypedvalue  
                .SaveToFile strLocalPath & objNodeList(i).text,2  
                Response.Write "释放文件"& objNodeList(i).text &"<br/>"  
                Response.Flush  
                .Close  
            EndWith  
Set objStream =Nothing  
Next  
Set objNodeList =Nothing  
EndIf  
EndIf  

Set objXmlFile =Nothing  

response.Write "文件解包完毕"  
%>  
</body>  
</html>