Этот класс основан на классе кэша данных walkmanxml, который более удобен в использовании. Добро пожаловать для общения и прогресса. Скопируйте код следующим образом.
<%
Удалить класс кэша XML
'------------------------------------------------ - ------------------
«Пожалуйста, сохраняйте информацию об авторских правах при перепечатке.
'Автор: ╰⑥月の雨╮
'Версия: ver1.0
«Эта категория извлекает уроки из класса кэша данных walkmanxml, который более удобен в использовании. Добро пожаловать для общения и достижения прогресса.
'------------------------------------------------ - ------------------
Класс XmlCacheCls
Private m_DataConn 'Источник данных должен быть открыт
Private m_CacheTime 'Время кэширования в секундах, по умолчанию 10 минут.
Частный xml-путь m_XmlFile, используйте абсолютный адрес, расширение не требуется.
Частный оператор SQL m_Sql '
Private m_SQLArr '(только для чтения) возвращаемый массив данных
Private m_ReadOn '(только для чтения) возвращает режим чтения 1-база данных 2-xml для обнаружения
'Атрибуты класса========================================
'Источник данных
Набор общедоступных свойств Conn(v)
Установите m_DataConn = v
Конечная собственность
Общественная собственность Get Conn
Конн = m_DataConn
Конечная собственность
'Кэшировать время
Открытая собственность Let CacheTime(v)
m_CacheTime = v
Конечная собственность
Открытая собственность Получить CacheTime
CacheTime = m_CacheTime
Конечная собственность
'xml-путь, используйте абсолютный адрес
Открытая собственность Let XmlFile(v)
m_XmlFile = v
Конечная собственность
Открытая собственность GetXmlFile
XmlFile = m_XmlFile
Конечная собственность
'Sql-заявление
Открытая собственность Let Sql(v)
m_Sql = v
Конечная собственность
Публичная собственность Получить Sql
SQL = m_Sql
Конечная собственность
'Вернуть массив записей
Открытая собственность: получение SQLArr
SQLArr = m_SQLArr
Конечная собственность
'Возвращение в режим чтения
Общественная собственность. Читать дальше
ReadOn = m_ReadOn
Конечная собственность
'Уничтожение класса ========================================
Private Sub Class_Initialize() 'Инициализировать класс
m_CacheTime=60*10 'Время кэширования по умолчанию составляет 10 минут.
Конец субтитра
Private Sub Class_Terminate() 'Освободить класс
Конец субтитра
'Публичные методы класса ========================================
Рем читает данные
Открытая функция ReadData
If FSOExistsFile(m_XmlFile) Тогда 'Xml-кэш существует, читайте непосредственно из xml
Чтениедатафромксмл
m_ReadOn=2
Еще
Чтение данных из базы данных
m_ReadOn=1
Конец, если
Конечная функция
Рем записывает данные XML
Открытая функция WriteDataToXml
If FSOExistsFile(m_XmlFile) then 'Выйти напрямую, если срок действия xml не истек
Если нет isXmlCacheExpired(m_XmlFile,m_CacheTime), то выйдите из функции
Конец, если
Димры
Dimxmlконтент
Дим к
xmlcontent=
xmlcontent = xmlcontent & <?xml version=1.0coding=gb2312?> & vbnewline
xmlcontent = xmlcontent & <root> & vbnewline
к=0
Установите Rs = Server.CreateObject(Adodb.Recordset)
Rs.open m_sql,m_DataConn,1
Пока не rs.eof
xmlcontent = xmlcontent & <item
Для каждого поля в rs.Fields
xmlcontent = xmlcontent & field.name & = & XMLStringEnCode(field.value) &
Следующий
rs.movenext
к=к+1
xmlcontent = xmlcontent & ></item> & vbnewline
Венд
RS.закрыть
Setrs=Ничего
xmlcontent = xmlcontent & </root> & vbnewline
Тусклый путь к папке
путь к папке = Trim(left(m_XmlFile,InstrRev(m_XmlFile,/)-1))
Вызов CreateDIR(folderpath&) 'Создать папку
WriteStringToXMLFile m_XmlFile, xmlcontent
Конечная функция
'Частные методы класса ========================================
Rem читает данные из XML-файла
Частная функция ReadDataFromXml
Dim SQLARR() 'Массив
Dim XmlDoc 'Объект XmlDoc
Dim objNode 'дочерний узел
Dim ItemsLength 'Длина дочернего узла
Dim AttributesLength 'Длина атрибутов дочернего узла
Установите XmlDoc=Server.CreateObject(Microsoft.XMLDOM)
XmlDoc.Async=False
XmlDoc.Load(m_XmlFile)
Set objNode=XmlDoc.documentElement 'Получить корневой узел
ItemsLength=objNode.ChildNodes.length 'Получить длину дочерних узлов
Для items_i=0 Для ItemsLength-1
AttributesLength=objNode.childNodes(items_i).Attributes.length 'Получить длину атрибутов дочернего узла
Для Attributes_i=0 Для AttributesLength-1
ReDim Preserve SQLARR (AttributesLength-1,items_i)
SQLArr(Attributes_i,items_i) = objNode.childNodes(items_i).Attributes(Attributes_i).Nodevalue
Следующий
Следующий
Установить XmlDoc = Ничего
m_SQLArr = SQLARR
Конечная функция
Рем читает данные из базы данных
Частная функция ReadDataFromDB
Димры
ДимSQLARR()
Дим к
к=0
Установите Rs = Server.CreateObject(Adodb.Recordset)
Rs.open m_sql,m_DataConn,1
Если нет (rs.eof и rs.bof), то
Пока не rs.eof
Тусклое поле
fieldlegth = rs.Fields.count
ReDim Preserve SQLARR(fieldlegth,k)
Дим Филди
Для fieldi = 0 Для fieldlegth-1
SQLArr(fieldi,k) = rs.Fields(fieldi).value
Следующий
rs.movenext
к=к+1
Венд
Конец, если
RS.закрыть
Setrs=Ничего
m_SQLArr = SQLArr
Конечная функция
'Вспомогательные частные методы класса ==========================================
Рем записывает XML-файл
Частная подпрограмма WriteStringToXMLFile (имя файла, строка)
Дим фс,тс
Установите fs= createobject(scripting.filesystemobject)
Если не IsObject(fs), то выйдите из Sub
Установите ts=fs.OpenTextFile(имя файла,2,True)
ts.writeline(стр)
ц.закрыть
Установите ts=Ничего
Установить fs=Ничего
Конец субтитра
Rem определяет, истек ли срок действия XML-кеша
Частная функция isXmlCacheExpired (файл, секунды)
Тусклый файл в последний раз
filelasttime = FSOGetFileLastModifiedTime(файл)
Если DateAdd(s,секунды,filelasttime) < Сейчас Тогда
isXmlCacheExpired = Истина
Еще
isXmlCacheExpired = ложь
Конец, если
Конечная функция
Рем получает время последнего изменения файла.
Частная функция FSOGetFileLastModifiedTime(файл)
Тусклый fso,f,s
Установите fso=CreateObject(Scripting.FileSystemObject)
Установите f=fso.GetFile(файл)
FSOGetFileLastModifiedTime = f.DateLastModified
Установить f = Ничего
Установить fso = Ничего
Конечная функция
Rem-файл существует
Открытая функция FSOExistsFile(файл)
Тусклый фсо
Установите fso = Server.CreateObject(Scripting.FileSystemObject)
Если fso.FileExists(файл) Тогда
ФСОексистсфиле = истина
Еще
ФСОексистсфиле = ложь
Конец, если
Установить fso = ничего
Конечная функция
Rem escape-символ xml
Частная функция XMLStringEnCode(str)
Если str& = Тогда XMLStringEnCode=:Выход из функции
строка = Заменить(строка,<,<)
str = Заменить(str,>,>)
стр = Заменить(строка,',')
ул = Заменить(стр,,)
ул = Заменить(стр,&,&)
XMLStringEnCode = строка
Конечная функция
Рем создает папку
Частная функция CreateDIR (byval LocalPath)
При ошибке Возобновить Далее
Dim i, FileObject, pathharr, path_level, pathtmp, cpath
LocalPath = Заменить(LocalPath,/,/)
Установите FileObject = server.createobject(Scripting.FileSystemObject)
patharr = Split(LocalPath,/)
path_level = UBound(patharr)
Для i = 0 до path_level
Если я=0 Тогда
путьtmp=patharr(0) & /
Еще
pathtmp = pathtmp & patharr(i) & /
Конец, если
cpath = left(pathtmp,len(pathtmp)-1)
Если не FileObject.FolderExists(cpath), Тогда
'Response.write cpath
FileObject.CreateFolder cpath
Конец, если
Следующий
Установить FileObject = Ничего
Если номер ошибки<>0 Тогда
СоздатьКАТАЛ = Ложь
Ошиб.Очистить
Еще
СоздатьКАТАЛ = Истина
Конец, если
Конечная функция
Конечный класс
'Установить кеш
Функция SetCache(xmlFilePath,CacheTime,Conn,Sql)
установить кэш = новый XmlCacheCls
Установить кэш.Conn=Conn
кэш.XmlFile=xmlFilePath
кэш.Sql=Sql
кэш.CacheTime=Время кэширования
кэш.WriteDataToXml
Установить кеш = Ничего
Конечная функция
'Читать кэш
Функция ReadCache(xmlFilePath,Conn,Sql,ByRef ReadOn)
установить кэш = новый XmlCacheCls
Установить кэш.Conn=conn
кэш.XmlFile=xmlFilePath
кэш.Sql=Sql
кэш.ReadData
ReadCache=cache.SQLArr
ReadOn=cache.ReadOn
Конечная функция
%>
Как использовать:
1 данные кэша в XML
Код:
Скопируйте код кода следующим образом:
<!--#include file=Conn.asp-->
<!--#include file=Xml.asp-->
<%
установить кэш = новый XmlCacheCls
Установить кэш.Conn=conn
кэш.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
кэш.Sql=выбрать 15 лучших prod_id,prod_name,prod_uptime из tblProduction
кэш.WriteDataToXml
%>
2 Чтение кэшированных данных
Код:
Скопируйте код кода следующим образом:
<!--#include file=Conn.asp-->
<!--#include file=Xml.asp-->
<%
установить кэш = новый XmlCacheCls
Установить кэш.Conn=conn
кэш.XmlFile=Server.Mappath(xmlcache/index/Top.xml)
кэш.Sql=выбрать 15 лучших prod_id,prod_name,prod_uptime из таблицыПроизводственный порядок по prod_id asc
кэш.ReadData
rsArray=cache.SQLArr
если isArray(rsArray), то
для i=0 до ubound(rsArray,2)
от j=0 до ubound(rsArray,1)
ответ.Write(rsArray(j,i)&<br><br>)
следующий
следующий
конец, если
%>Время кэширования, единица измерения по умолчанию — 10 минут в секундах. Вы также можете установить кэш.CacheTime=60*30 30 минут самостоятельно;