asp源码打包成xml的工具

  下边这个存为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>