最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > asp教程

xml缓存类,缓存到XML文件,有例子技巧

日期:05-28    来源:中国设计秀    作者:cnwebshow.com

<%eZi中国设计秀
Rem xml缓存类eZi中国设计秀
'--------------------------------------------------------------------eZi中国设计秀
'转载的时候请保留版权信息eZi中国设计秀
'作者:╰⑥月の雨╮eZi中国设计秀
'版本:ver1.0eZi中国设计秀
'本类部分借鉴 walkmanxml数据缓存类,使用更为方便 欢迎各位交流进步eZi中国设计秀
'--------------------------------------------------------------------eZi中国设计秀
Class XmlCacheClseZi中国设计秀
PRivate m_DataConn '数据源,必须已经打开eZi中国设计秀
Private m_CacheTime '缓存时间,单位秒 默认10分钟eZi中国设计秀
Private m_XmlFile 'xml路径,用绝对地址,不需要加扩展名eZi中国设计秀
Private m_Sql 'SQL语句eZi中国设计秀
Private m_SQLArr '(只读)返回的数据数组eZi中国设计秀
Private m_ReadOn '(只读)返回读取方式 1-数据库 2-xml 检测用eZi中国设计秀

'类的属性=========================================eZi中国设计秀

'数据源eZi中国设计秀
Public Property Set Conn(v)eZi中国设计秀
Set m_DataConn = veZi中国设计秀
End PropertyeZi中国设计秀
Public Property Get ConneZi中国设计秀
Conn = m_DataConneZi中国设计秀
End PropertyeZi中国设计秀

'缓存时间eZi中国设计秀
Public Property Let CacheTime(v)eZi中国设计秀
m_CacheTime = veZi中国设计秀
End PropertyeZi中国设计秀
Public Property Get CacheTimeeZi中国设计秀
CacheTime = m_CacheTimeeZi中国设计秀
End PropertyeZi中国设计秀

'xml路径,用绝对地址eZi中国设计秀
Public Property Let XmlFile(v)eZi中国设计秀
m_XmlFile = veZi中国设计秀
End PropertyeZi中国设计秀
Public Property Get XmlFileeZi中国设计秀
XmlFile = m_XmlFileeZi中国设计秀
End PropertyeZi中国设计秀

'Sql语句eZi中国设计秀
Public Property Let Sql(v)eZi中国设计秀
m_Sql = veZi中国设计秀
End PropertyeZi中国设计秀
Public Property Get SqleZi中国设计秀
Sql = m_SqleZi中国设计秀
End PropertyeZi中国设计秀
'返回记录数组eZi中国设计秀
Public Property Get SQLArreZi中国设计秀
SQLArr = m_SQLArreZi中国设计秀
End PropertyeZi中国设计秀

'返回读取方式eZi中国设计秀
Public Property Get ReadOneZi中国设计秀
ReadOn = m_ReadOneZi中国设计秀
End PropertyeZi中国设计秀

'类的析构=========================================eZi中国设计秀

Private Sub Class_Initialize() '初始化类eZi中国设计秀
m_CacheTime=60*10 '默认缓存时间为10分钟eZi中国设计秀
End SubeZi中国设计秀

Private Sub Class_Terminate() '释放类eZi中国设计秀

End SubeZi中国设计秀

'类的公共方法=========================================eZi中国设计秀

Rem 读取数据eZi中国设计秀
Public Function ReadDataeZi中国设计秀
If fsoExistsFile(m_XmlFile) Then '存在xml缓存,直接从xml中读取eZi中国设计秀
ReadDataFromXmleZi中国设计秀
m_ReadOn=2eZi中国设计秀
ElseeZi中国设计秀
ReadDataFromDBeZi中国设计秀
m_ReadOn=1eZi中国设计秀
End IfeZi中国设计秀
End FunctioneZi中国设计秀

Rem 写入XML数据eZi中国设计秀
Public Function WriteDataToXmleZi中国设计秀
If FSOExistsFile(m_XmlFile) Then '如果xml未过期则直接退出eZi中国设计秀
If Not isXmlCacheExpired(m_XmlFile,m_CacheTime) Then Exit FunctioneZi中国设计秀
End IfeZi中国设计秀
Dim rseZi中国设计秀
Dim xmlcontenteZi中国设计秀
Dim keZi中国设计秀
xmlcontent = ""eZi中国设计秀
xmlcontent = xmlcontent & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbnewlineeZi中国设计秀
xmlcontent = xmlcontent & " <root>" & vbnewlineeZi中国设计秀
k=0eZi中国设计秀
Set Rs = Server.CreateObject("Adodb.Recordset")eZi中国设计秀
Rs.open m_sql,m_DataConn,1eZi中国设计秀
While Not rs.eofeZi中国设计秀
xmlcontent = xmlcontent & " <item "eZi中国设计秀
For Each field In rs.FieldseZi中国设计秀
xmlcontent = xmlcontent & field.name & "=""" & XMLStringEnCode(field.value) & """ "eZi中国设计秀
NexteZi中国设计秀
rs.movenexteZi中国设计秀
k=k+1eZi中国设计秀
xmlcontent = xmlcontent & "></item>" & vbnewlineeZi中国设计秀
WendeZi中国设计秀
rs.closeeZi中国设计秀
Set rs = NothingeZi中国设计秀
xmlcontent = xmlcontent & " </root>" & vbnewlineeZi中国设计秀

Dim folderpatheZi中国设计秀
folderpath = Trim(left(m_XmlFile,InstrRev(m_XmlFile,"")-1))eZi中国设计秀
Call CreateDIR(folderpath&"") '创建文件夹eZi中国设计秀
WriteStringToXMLFile m_XmlFile,xmlcontenteZi中国设计秀
End FunctioneZi中国设计秀

'类的私有方法=========================================eZi中国设计秀

Rem 从Xml文件读取数据eZi中国设计秀
Private Function ReadDataFromXml eZi中国设计秀
Dim SQLARR() '数组eZi中国设计秀
Dim XmlDoc 'XmlDoc对象eZi中国设计秀
Dim objNode '子节点eZi中国设计秀
Dim ItemsLength '子节点的长度eZi中国设计秀
Dim AttributesLength '子节点属性的长度eZi中国设计秀
Set XmlDoc=Server.CreateObject("Microsoft.XMLDOM")eZi中国设计秀
XmlDoc.Async=FalseeZi中国设计秀
XmlDoc.Load(m_XmlFile)eZi中国设计秀
Set objNode=XmlDoc.documentElement '获取根节点eZi中国设计秀
ItemsLength=objNode.ChildNodes.length '获取子节点的长度eZi中国设计秀
For items_i=0 To ItemsLength-1eZi中国设计秀
AttributesLength=objNode.childNodes(items_i).Attributes.length '获取子节点属性的长度eZi中国设计秀
For Attributes_i=0 To AttributesLength-1eZi中国设计秀
ReDim Preserve SQLARR(AttributesLength-1,items_i)eZi中国设计秀
SQLArr(Attributes_i,items_i) = objNode.childNodes(items_i).Attributes(Attributes_i).NodevalueeZi中国设计秀
NexteZi中国设计秀
NexteZi中国设计秀
Set XmlDoc = NothingeZi中国设计秀
m_SQLArr = SQLARReZi中国设计秀
End FunctioneZi中国设计秀

Rem 从数据库读取数据eZi中国设计秀
Private Function ReadDataFromDBeZi中国设计秀
Dim rseZi中国设计秀
Dim SQLARR()eZi中国设计秀
Dim keZi中国设计秀
k=0eZi中国设计秀
Set Rs = Server.CreateObject("Adodb.Recordset")eZi中国设计秀
Rs.open m_sql,m_DataConn,1eZi中国设计秀
If Not (rs.eof and rs.bof) TheneZi中国设计秀
While Not rs.eofeZi中国设计秀
Dim fieldlegtheZi中国设计秀
fieldlegth = rs.Fields.counteZi中国设计秀
ReDim Preserve SQLARR(fieldlegth,k)eZi中国设计秀
Dim fieldieZi中国设计秀
For fieldi = 0 To fieldlegth-1eZi中国设计秀
SQLArr(fieldi,k) = rs.Fields(fieldi).valueeZi中国设计秀
NexteZi中国设计秀
rs.movenexteZi中国设计秀
k=k+1eZi中国设计秀
WendeZi中国设计秀
End IfeZi中国设计秀
rs.closeeZi中国设计秀
Set rs = NothingeZi中国设计秀
m_SQLArr = SQLArreZi中国设计秀
End FunctioneZi中国设计秀

'类的辅助私有方法=========================================eZi中国设计秀

Rem 写xml文件eZi中国设计秀
Private Sub WriteStringToXMLFile(filename,str)eZi中国设计秀
Dim fs,tseZi中国设计秀
Set fs= createobject("scripting.filesystemobject")eZi中国设计秀
If Not IsObject(fs) Then Exit Sub eZi中国设计秀
Set ts=fs.OpenTextFile(filename,2,True)eZi中国设计秀
ts.writeline(str)eZi中国设计秀
ts.closeeZi中国设计秀
Set ts=NothingeZi中国设计秀
Set fs=NothingeZi中国设计秀
End SubeZi中国设计秀

Rem 判断xml缓存是否到期eZi中国设计秀
Private Function isXmlCacheExpired(file,seconds)eZi中国设计秀
Dim filelasttimeeZi中国设计秀
filelasttime = FSOGetFileLastModifiedTime(file)eZi中国设计秀
If DateAdd("s",seconds,filelasttime) < Now TheneZi中国设计秀
isXmlCacheExpired = TrueeZi中国设计秀
ElseeZi中国设计秀
isXmlCacheExpired = FalseeZi中国设计秀
End IfeZi中国设计秀
End FunctioneZi中国设计秀

Rem 得到文件的最后修改时间eZi中国设计秀
Private Function FSOGetFileLastModifiedTime(file)eZi中国设计秀
Dim fso,f,s eZi中国设计秀
Set fso=CreateObject("Scripting.FileSystemObject") eZi中国设计秀
Set f=fso.GetFile(file) eZi中国设计秀
FSOGetFileLastModifiedTime = f.DateLastModifiedeZi中国设计秀
Set f = NothingeZi中国设计秀
Set fso = NothingeZi中国设计秀
End FunctioneZi中国设计秀

Rem 文件是否存在eZi中国设计秀
Public Function FSOExistsFile(file)eZi中国设计秀
Dim fsoeZi中国设计秀
Set fso = Server.CreateObject("Scripting.FileSystemObject")eZi中国设计秀
If fso.FileExists(file) TheneZi中国设计秀
FSOExistsFile = trueeZi中国设计秀
ElseeZi中国设计秀
FSOExistsFile = falseeZi中国设计秀
End IfeZi中国设计秀
Set fso = nothingeZi中国设计秀
End FunctioneZi中国设计秀

Rem xml转义字符eZi中国设计秀
Private Function XMLStringEnCode(str)eZi中国设计秀
If str&"" = "" Then XMLStringEnCode="":Exit FunctioneZi中国设计秀
str = Replace(str,"<","<")eZi中国设计秀
str = Replace(str,">",">")eZi中国设计秀
str = Replace(str,"'","&apos;")eZi中国设计秀
str = Replace(str,"""",""")eZi中国设计秀
str = Replace(str,"&","&")eZi中国设计秀
XMLStringEnCode = streZi中国设计秀
End FunctioneZi中国设计秀

Rem 创建文件夹eZi中国设计秀
Private function CreateDIR(byval LocalPath)eZi中国设计秀
On Error Resume NexteZi中国设计秀
Dim i,FileObject,patharr,path_level,pathtmp,cpatheZi中国设计秀
LocalPath = Replace(LocalPath,"","/")eZi中国设计秀
Set FileObject = server.createobject("Scripting.FileSystemObject")eZi中国设计秀
patharr = Split(LocalPath,"/")eZi中国设计秀
path_level = UBound (patharr)eZi中国设计秀
For i = 0 To path_leveleZi中国设计秀
If i=0 Then eZi中国设计秀
pathtmp=patharr(0) & "/"eZi中国设计秀
Else eZi中国设计秀
pathtmp = pathtmp & patharr(i) & "/"eZi中国设计秀
End IfeZi中国设计秀
cpath = left(pathtmp,len(pathtmp)-1)eZi中国设计秀
If Not FileObject.FolderExists(cpath) TheneZi中国设计秀
'Response.write cpatheZi中国设计秀
FileObject.CreateFolder cpatheZi中国设计秀
End IfeZi中国设计秀
NexteZi中国设计秀
Set FileObject = NothingeZi中国设计秀
If err.number<>0 TheneZi中国设计秀
CreateDIR = FalseeZi中国设计秀
err.CleareZi中国设计秀
ElseeZi中国设计秀
CreateDIR = TrueeZi中国设计秀
End IfeZi中国设计秀
End FunctioneZi中国设计秀
End ClasseZi中国设计秀
'设置缓存eZi中国设计秀
Function SetCache(xmlFilePath,CacheTime,Conn,Sql)eZi中国设计秀
set cache=new XmlCacheClseZi中国设计秀
Set cache.Conn=ConneZi中国设计秀
cache.XmlFile=xmlFilePatheZi中国设计秀
cache.Sql=SqleZi中国设计秀
cache.CacheTime=CacheTimeeZi中国设计秀
cache.WriteDataToXmleZi中国设计秀
Set cache = NothingeZi中国设计秀
End FunctioneZi中国设计秀
'读取缓存eZi中国设计秀
Function ReadCache(xmlFilePath,Conn,Sql,ByRef ReadOn)eZi中国设计秀
set cache=new XmlCacheClseZi中国设计秀
Set cache.Conn=conneZi中国设计秀
cache.XmlFile=xmlFilePatheZi中国设计秀
cache.Sql=SqleZi中国设计秀
cache.ReadDataeZi中国设计秀
ReadCache=cache.SQLArreZi中国设计秀
ReadOn=cache.ReadOneZi中国设计秀
End FunctioneZi中国设计秀
%>eZi中国设计秀

eZi中国设计秀
使用方法:eZi中国设计秀

1 缓存数据到xmleZi中国设计秀
代码:eZi中国设计秀

 程序代码eZi中国设计秀
<!--#include file="Conn.asp"-->eZi中国设计秀
<!--#include file="Xml.asp"-->eZi中国设计秀
<%eZi中国设计秀
set cache=new XmlCacheClseZi中国设计秀
Set cache.Conn=conneZi中国设计秀
cache.XmlFile=Server.Mappath("xmlcache/index/Top.xml")eZi中国设计秀
cache.Sql="select top 15 prod_id,prod_name,prod_uptime from tblProduction"eZi中国设计秀
cache.WriteDataToXmleZi中国设计秀
%>eZi中国设计秀

eZi中国设计秀
2 读取缓存数据eZi中国设计秀

代码:eZi中国设计秀

eZi中国设计秀
 程序代码eZi中国设计秀
<!--#include file="Conn.asp"-->eZi中国设计秀
<!--#include file="Xml.asp"-->eZi中国设计秀
<%eZi中国设计秀
set cache=new XmlCacheClseZi中国设计秀
Set cache.Conn=conneZi中国设计秀
cache.XmlFile=Server.Mappath("xmlcache/index/Top.xml")eZi中国设计秀
cache.Sql="select top 15 prod_id,prod_name,prod_uptime from tblProduction order by prod_id asc"eZi中国设计秀
cache.ReadDataeZi中国设计秀
rsArray=cache.SQLArreZi中国设计秀
if isArray(rsArray) theneZi中国设计秀
for i=0 to ubound(rsArray,2)eZi中国设计秀
for j=0 to ubound(rsArray,1)eZi中国设计秀
response.Write(rsArray(j,i)&"<br><br>")eZi中国设计秀
nexteZi中国设计秀
nexteZi中国设计秀
end ifeZi中国设计秀
%>eZi中国设计秀

eZi中国设计秀
缓存时间,单位秒 默认10分钟;也可以自己设定 cache.CacheTime=60*30 30分钟eZi中国设计秀

本文引用地址:/bc/article_46278.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明