<٪
فئة ذاكرة التخزين المؤقت REM XML
فئة XMLCACHECLS
يجب فتح مصدر بيانات m_dataconn الخاص
خاص m_cachetime 'cachetime ، الافتراضي إلى 10 دقائق في ثوان
مسار XML الخاص بـ M_XMLFile الخاص ، استخدم العنوان المطلق ، لا يلزم تمديد
بيان M_SQL 'SQL الخاص
خاص M_SQLARR '(قراءة فقط) مجموعة بيانات إرجاع
إرجاع M_Readon الخاص (للقراءة فقط) طريقة القراءة 1-Database 2-XML للكشف
'سمات الفصل =============================================== ===
مصدر البيانات
مجموعة الممتلكات العامة Conn (V)
تعيين m_dataconn = v
نهاية الملكية
الممتلكات العامة الحصول على كون
conn = m_dataconn
نهاية الملكية
وقت ذاكرة التخزين المؤقت
الممتلكات العامة دع Cachetime (V)
m_cachetime = v
نهاية الملكية
الممتلكات العامة تحصل على cachetime
cachetime = m_cachetime
نهاية الملكية
'مسار XML ، مع العنوان المطلق
الممتلكات العامة دع xmlfile (V)
m_xmlfile = v
نهاية الملكية
الممتلكات العامة تحصل على xmlfile
xmlfile = m_xmlfile
نهاية الملكية
بيان SQL
الممتلكات العامة دع SQL (V)
m_sql = v
نهاية الملكية
الممتلكات العامة الحصول على SQL
SQL = M_SQL
نهاية الملكية
العودة إلى صفيف التسجيل
الممتلكات العامة الحصول على sqlarr
sqlarr = m_sqlarr
نهاية الملكية
"العودة لقراءة الطريقة
الممتلكات العامة الحصول على readon
readon = m_readon
نهاية الملكية
"تدمير الفئة ================================================ =========
sub class_initialize () تهيئة الفصل
m_cachetime = 60*10 'وقت ذاكرة التخزين المؤقت الافتراضي هو 10 دقائق
نهاية الفرعية
sub sub class_terminate () 'فئة الإصدار
نهاية الفرعية
"الطريقة العامة للفئة =============================================== ==============
REM قراءة البيانات
الوظيفة العامة readData
إذا كان fsoexistsfile (m_xmlfile) ثم "هناك ذاكرة التخزين المؤقت XML ، اقرأ مباشرة من XML
ReadDatafromxml
m_readon = 2
آخر
ReadDatafromdb
m_readon = 1
إنهاء إذا
وظيفة النهاية
REM اكتب بيانات XML
وظيفة عامة writedatatoxml
إذا كان fsoexistsfile (m_xmlfile) ثم 'إذا لم تنتهي XML ، فخرج مباشرة
إذا لم يكن isxmlcacheexpired (m_xmlfile ، m_cachetime) ثم وظيفة الخروج
إنهاء إذا
قاتمة روبية
Dim XmlContent
قاتمة ك
XMlContent =
XmlContent = XmlContent & <؟ XML الإصدار = 1.0 الترميز = GB2312؟>
xmlcontent = xmlcontent & <rout> & vbnewline
ك = 0
تعيين rs = server.createBject (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.close
تعيين روبية = لا شيء
xmlcontent = xmlcontent & </rout> & vbnewline
قاتمة المجلد
المجلد = trim (يسار (m_xmlfile ، instrev (m_xmlfile ،/)-1))
Call Createir (FolderPath &) 'Create Folder
WriteStringToxMlfile M_xmlfile ، XMlContent
وظيفة النهاية
'طريقة خاصة للفئة ============================================== ===========
قراءة بيانات REM من ملف XML
وظيفة خاصة readDatafromxml
Dim Sqlarr () 'صفيف
كائن XMLDOC DIM XMLDOC
عقدة الطفل dimnode '
طول عناصر الطول "طول العقد الفرعية
طول السمات dim entributeslength 'سمة عقدة الطفل
SET XMLDOC = server.createBject (microsoft.xmldom)
xmldoc.async = false
xmldoc.load (m_xmlfile)
تعيين objnode = xmldoc.documentElement 'الحصول على عقدة الجذر
heatlength = objnode.childnodes.length 'احصل على طول عقدة الطفل
بالنسبة للعناصر _i = 0 إلى عناصر الطول 1
attributeslength = objnode.childnodes (items_i) .attributes.length 'احصل على طول سمة عقدة الطفل
بالنسبة للسمات _ 0 إلى attributeLength-1
Redim Preserve Sqlarr (AttributesLength-1 ، items_i)
sqlarr (attributes_i ، heads_i) = objnode.childnodes (items_i) .attributes (attributes_i) .nodevalue
التالي
التالي
تعيين xmldoc = لا شيء
m_sqlarr = sqlarr
وظيفة النهاية
قراءة البيانات من قاعدة البيانات
وظيفة خاصة readDataFromDB
قاتمة روبية
Dim Sqlarr ()
قاتمة ك
ك = 0
تعيين rs = server.createBject (adodb.recordset)
Rs.Open m_sql ، m_dataconn ، 1
إذا لم يكن (rs.eof و rs.bof) ثم
بينما لا rs.eof
قاتمة fieldlegth
fieldlegth = rs.fields.count
Redim Preserve Sqlarr (Fieldlegth ، K)
قاتمة الميدان
لـ fielddi = 0 إلى fieldlegth-1
Sqlarr (Fieldi ، K) = Rs.Fields (Fieldi) .value
التالي
Rs.Movenext
ك = ك+1
ويند
إنهاء إذا
Rs.close
تعيين روبية = لا شيء
m_sqlarr = sqlarr
وظيفة النهاية
"طريقة خاصة مساعدة للفئة ===================================================== =========
REM يكتب ملف XML
substringtoxmlfile subtringtoxmlfile (اسم الملف ، str)
قاتمة FS ، TS
set fs = createObject (scripting.filesystemObject)
إذا لم يكن isObject (FS) ثم الخروج
تعيين ts = fs.opentextFile (اسم الملف ، 2 ، صحيح)
ts.writeline (Str)
Ts.close
تعيين TS = لا شيء
تعيين fs = لا شيء
نهاية الفرعية
يحدد REM ما إذا كانت ذاكرة التخزين المؤقت XML تنتهي صلاحيتها
وظيفة خاصة ISXMLCACHEEXPIRED (ملف ، ثواني)
قاتمة fileLastTime
fileLastTime = fsogetFileleleLastModifiedTime (ملف)
إذا كان dateadd (s ، ثواني ، fileLastTime) <الآن ثم
isxmlcacheexpired = true
آخر
isxmlcacheexpired = false
إنهاء إذا
وظيفة النهاية
REM احصل على آخر وقت تعديل للملف
الوظيفة الخاصة fsogetFileleleLastModifiedTime (ملف)
قاتمة FSO ، و ، ق
set fso = createObject (scripting.filesystemObject)
تعيين f = fso.getFile (ملف)
fsogetFilelElastModifiedTime = f.datelastModified
تعيين f = لا شيء
تعيين fso = لا شيء
وظيفة النهاية
هل يوجد ملف REM؟
الوظيفة العامة fsoexistsfile (ملف)
قاتمة FSO
set fso = server.createObject (scripting.filesystemObject)
إذا fso.filexists (ملف) ثم
fsoexistsfile = صحيح
آخر
fsoexistsfile = false
إنهاء إذا
تعيين fso = لا شيء
وظيفة النهاية
REM XML Escape أحرف
وظيفة خاصة XMLStringEncode (STR)
إذا str & = ثم xmlstringencode =: وظيفة الخروج
str = استبدال (str ، <، <)
str = استبدال (str ،> ،>)
str = استبدال (str ، '، & apos ؛)
str = استبدال (str ،،)
str = استبدال (str ، & ، &)
xmlstringencode = str
وظيفة النهاية
REM إنشاء مجلد
وظيفة خاصة تم إنشاؤها (Byval LocalPath)
عند استئناف الخطأ التالي
Dim I ، FileObject ، Patharr ، Path_level ، Pathtmp ، Cpath
LocalPath = استبدال (LocalPath ،/،/)
set fileObject = server.createObject (scripting.filesystemObject)
patharr = split (localpath ،/)
path_level = ubound (patharr)
لأني = 0 إلى path_level
إذا كنت = 0 ثم
pathtmp = patharr (0) و /
آخر
pathtmp = pathtmp & patharr (i) و /
إنهاء إذا
CPATH = LEFT (PATHTMP ، LEN (PATHTMP) -1)
إذا لم يكن fileObject.folderexists (CPATH) ثم
'استجابة. write cpath
fileObject.createfolder cpath
إنهاء إذا
التالي
تعيين fileObject = لا شيء
إذا err.number <> 0 ثم
Createdir = false
err.clear
آخر
Createdir = صحيح
إنهاء إذا
وظيفة النهاية
الطبقة النهائية
قم بتعيين ذاكرة التخزين المؤقت
وظيفة setCache (xmlfilepath ، cachetime ، conn ، sql)
تعيين ذاكرة التخزين المؤقت = XMLCACHECLS جديدة
تعيين cache.conn = conn
cache.xmlfile = xmlfilepath
cache.sql = sql
cache.cachetime = cachetime
Cache.Writedatatoxml
تعيين ذاكرة التخزين المؤقت = لا شيء
وظيفة النهاية
اقرأ ذاكرة التخزين المؤقت
وظيفة readcache (xmlfilepath ، conn ، sql ، byref readon)
تعيين ذاكرة التخزين المؤقت = XMLCACHECLS جديدة
تعيين cache.conn = conn
cache.xmlfile = xmlfilepath
cache.sql = sql
Cache.ReadData
readcache = cache.sqlarr
readon = cache.readon
وظيفة النهاية
٪>
كيفية استخدام:
1 بيانات ذاكرة التخزين المؤقت إلى XML
شفرة:
رمز البرنامج
<!-#تضمين ملف = conn.asp->
<!-#تضمين ملف = xml.asp->
<٪
تعيين ذاكرة التخزين المؤقت = XMLCACHECLS جديدة
تعيين cache.conn = conn
cache.xmlfile = server.mappath (xmlcache/index/top.xml)
cache.sql = حدد أعلى 15 prod_id ، prod_name ، prod_uptime من tblproduction
Cache.Writedatatoxml
٪>
2 اقرأ البيانات المخبأة
شفرة:
رمز البرنامج
<!-#تضمين ملف = conn.asp->
<!-#تضمين ملف = xml.asp->
<٪
تعيين ذاكرة التخزين المؤقت = XMLCACHECLS جديدة
تعيين cache.conn = conn
cache.xmlfile = server.mappath (xmlcache/index/top.xml)
cache.sql = حدد أعلى 15 prod_id ، prod_name ، prod_uptime من ترتيب tblproduction بواسطة prod_id asc
Cache.ReadData
rsarray = cache.sqlarr
إذا isarray (rsarray) ثم
ل I = 0 إلى Ubund (Rsarray ، 2)
لـ J = 0 إلى Ubund (Rsarray ، 1)
respons.write (rsarray (j ، i) & <br> <br>)
التالي
التالي
إنهاء إذا
٪>
وقت ذاكرة التخزين المؤقت 10 دقائق بشكل افتراضي في ثوانٍ ؛