يمكن استخدام فئة asp هذه للتعامل مع إرسال واستقبال حزم XML. ويمكن استخدامه للاتصال بين واجهات API بين مختلف الأنظمة غير المتجانسة، ولمعالجة استدعاء خدمات الويب واستقبالها.
ملكية:
سلسلة
عنوان الاستلاملإرسال ملف XML
كتابة
الرسالة فقط: رسالة خطأ في النظام
خيط
للقراءة فقط
: احصل على قيمة العقدة في حزمة XML المرسلة
خيط
معلمات للقراءة فقط: Str: اسم العقدة
GetXmlData: احصل على كائن بيانات XML الذي تم إرجاعه
XMLDom
قراءة فقط
الأسلوب:
LoadXmlFromFile: تعبئة معلمة كائن XmlDoc المسار: مسار xml من ملف xml خارجي
Void
LoadXmlFromString: قم بملء معلمة كائن XmlDoc Str:xml بسلسلة
فارغ
تقوم NodeValue بتعيين معلمات العقدة
المعلمة
NodeName اسم العقدة
NodeText Value
NodeType نوع الحفظ [text=0,cdata=1]
blnEncode ما إذا كان سيتم التشفير [صحيح، خطأ]
فارغ
SendHttpData: إرسال حزمة xml
PrintSendXmlData: طباعة إرسال طلب بيانات XML
PrintGetXmlData: طباعة إرجاع بيانات XML
SaveSendXmlDataToFile: حفظ إرسال بيانات طلب xml إلى ملف، اسم الملف هو sendxml_date.txt
SaveGetXmlDataToFile: احفظ بيانات XML التي تم إرجاعها إلى ملف، اسم الملف هو getxml_date.txt
GetSingleNode: احصل على معلمة معلومات العقدة Nodestring لـ xml الذي تم إرجاعه: اسم العقدة
AcceptHttpData: تلقي حزمة XML، يتم الحصول على معلومات الخطأ من خلال كائن الرسالة
AcceptSingleNode: Return معلومات عقدة حزمة XML المستلمة المعلمة Nodestring: اسم العقدة
PrintAcceptXmlData: طباعة بيانات XML المستلمة من قبل الطرف المتلقي
SaveAcceptXmlDataToFile: احفظ بيانات حزمة XML المستلمة في ملف، اسم الملف هو Acceptxml_date.txt
SaveDebugStringToFile: احفظ بيانات تصحيح الأخطاء في ملف يسمى debugnote_date.txt
المعلمة Debugstr: معلومات التصحيح
الكود:
xmlcls.asp
<%
يعالج Rem إرسال واستقبال فئات بيانات XML
'------------------------------------------------ -
"يُرجى الاحتفاظ بمعلومات حقوق الطبع والنشر عند إعادة الطباعة
'المؤلف: وكمان
الشركة: Bubuweiying Technology Co., Ltd.
موقع الويب: http://www.shouji138.com
"الإصدار: الإصدار 1.0
'------------------------------------------------ -
تعريف متغير
فئة XmlClass
Rem
XmlDoc خاص، XmlHttp
رمز الرسالة الخاصة، مفتاح النظام، XmlPath
خاص m_GetXmlDoc،m_url
تهيئة
m_XmlDocAccept الخاصة
Rem
فئة فرعية خاصة_Initialize()
على خطأ استئناف التالي
رمز الرسالة = ""
XmlPath = ""
تعيين XmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0")
XmlDoc.ASYNC = خطأ
يقوم End Sub
Rem بتدمير الكائن
فئة فرعية خاصة_Terminate()
إذا كان IsObject(XmlDoc) فاضبط XmlDoc = لا شيء
إذا كان IsObject(m_XmlDocAccept) فاضبط m_XmlDocAccept = لا شيء
إذا كان IsObject(m_GetXmlDoc) فاضبط m_GetXmlDoc = لا شيء
نهاية الفرعية
'يبدأ تعريف السمة العامة --------------------------
رسالة خطأ ريم
الملكية العامة احصل على الرسالة()
الرسالة = رمز الرسالة
نهاية الملكية
Rem العنوان لإرسال XML إليه
عنوان URL للملكية العامة (str)
m_url = str
نهاية الملكية
'نهاية تعريف السمة العامة --------------------------
'بدء العملية والطريقة الخاصة --------------------------
تحميل العينية XML
تحميل فرعي خاصXmlData()
إذا كان XmlPath <> "" إذن
إذا لم يكن XmlDoc.Load(XmlPath) إذن
XmlDoc.LoadXml "<?xml version=""1.0"" encoding=""gb2312""?><root/>"
نهاية إذا
آخر
XmlDoc.LoadXml "<?xml version=""1.0"" encoding=""gb2312""?><root/>"
نهاية إذا
تحويل حرف
Sub
Rem
وظيفة خاصة AnsiToUnicode(ByVal str)
ديم i، j، c، i1، i2، u، fs، f، p
أنسي تو يونيكود = ""
ع = ""
لأني = 1 إلى لين (شارع)
ج = منتصف (شارع، ط، 1)
ي = تصاعدي (ج)
إذا كان j <0 ثم
ي = ي + 65536
نهاية إذا
إذا كان j >= 0 و j <= 128 إذن
إذا ع = "ج" ثم
AnsiToUnicode = " " & AnsiToUnicode
ع = "ه"
نهاية إذا
AnsiToUnicode = AnsiToUnicode & c
آخر
إذا ع = "ه" ثم
AnsiToUnicode = AnsiToUnicode & " "
ع = "ج"
نهاية إذا
AnsiToUnicode = AnsiToUnicode & ("&#" & j & ";")
نهاية إذا
التالي
نهاية وظيفة
تحويل حرف Rem
الدالة الخاصة strAnsi2Unicode(asContents)
ديم لين1،أنا،فارتشار،فاراسك
strAnsi2Unicode = ""
len1=LenB(asContents)
إذا كان len1=0 ثم قم بالخروج من الوظيفة
لأني = 1 إلى len1
varchar=MidB(asContents,i,1)
فاراسك = تصاعدي (فارشار)
إذا فاراسك> 127 ثم
إذا كان MidB(asContents,i+1,1)<>"" إذن
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
نهاية إذا
ط=ط+1
آخر
strAnsi2Unicode = strAnsi2Unicode & Chr(varasc)
نهاية إذا
التالي
وظيفة النهاية
يقوم Rem بإلحاق الأحرف بالملف
WriteStringToFile الفرعي الخاص (اسم الملف، شارع)
على خطأ استئناف التالي
خافت خ، تيسي
تعيين fs= createobject("script_ing.filesystemobject")
إذا لم يكن IsObject(fs) ثم قم بالخروج من Sub
تعيين ts=fs.OpenTextFile(Server.MapPath(filename),8,True)
ts.writeline(شارع)
ts.إغلاق
تعيين نهاية الخبر = لا شيء
تعيين خ = لا شيء
نهاية الفرعية
'نهاية العملية والطريقة الخاصة --------------------------
'تبدأ الطريقة العامة --------------------------
'''''''''' أرسل جزء XML للبدء
Rem يقوم بملء كائن XmlDoc من ملف xml خارجي
التحميل الفرعي العامXmlFromFile(المسار)
XmlPath = Server.MapPath(مسار)
تحميلXmlData()
يقوم End Sub
Rem بتعبئة كائن XmlDoc بسلسلة
التحميل الفرعي العامXmlFromString(str)
XmlDoc.LoadXml شارع
End Sub
Rem Set معلمات العقدة مثل NodeValue "appID"، AppID، 1، False
'------------------------------------------------ -
"المعلمة:
'اسم عقدة NodeName
"قيمة نص العقدة."
'نوع حفظ NodeType [text=0,cdata=1]
'blnEncode ما إذا كان سيتم تشفير [صحيح، خطأ]
'------------------------------------------------ -
قيمة العقدة الفرعية العامة (Byval NodeName،Byval NodeText،Byval NodeType،Byval blnEncode)
Dim ChildNode، إنشاء قسم CDATA
NodeName = Lcase(NodeName)
إذا كان XmlDoc.documentElement.selectSingleNode(NodeName) لا شيء، إذن
تعيين ChildNode = XmlDoc.documentElement.appendChild(XmlDoc.createNode(1,NodeName,""))
آخر
تعيين ChildNode = XmlDoc.documentElement.selectSingleNode(NodeName)
نهاية إذا
إذا blnEncode = صحيح ثم
NodeText = AnsiToUnicode(NodeText)
نهاية إذا
إذا NodeType = 1 ثم
ChildNode.Text = ""
تعيين CreateCDATASection = XmlDoc.createCDATASection(Replace(NodeText,"]]>"،"]]>"))
ChildNode.appendChild(createCDATASection)
آخر
ChildNode.Text = NodeText
نهاية إذا
نهاية الفرعية
'------------------------------------------------ -
'احصل على قيمة العقدة في حزمة XML المرسلة
"المعلمة:
'اسم عقدة Str
'------------------------------------------------ -
الملكية العامة GetXmlNode(ByvalStr)
إذا كان XmlDoc.documentElement.selectSingleNode(Str) يساوي لا شيء، إذن
XmlNode = "خالية"
آخر
XmlNode = XmlDoc.documentElement.selectSingleNode(Str).text
نهاية إذا
نهاية الخاصية
'---------------------------------------------- -- ---
'احصل على كائن بيانات XML الذي تم إرجاعه
'مثال:
'عندما لا يكون GetXmlData فارغًا، فإن GetXmlData يكون كائن XML
'------------------------------------------------ -
الملكية العامة احصل على GetXmlData()
قم بتعيين GetXmlData = m_GetXmlDoc
نهاية الملكية
'------------------------------------------------ -
'أرسل حزمة xml إلى http://www.devdao.com/
'------------------------------------------------ -
إرسالHttpData العام الفرعي ()
Dim i,GetXmlDoc,LoadAppid
تعيين Xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
تعيين GetXmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0") ' إرجاع حزمة xml
XmlHttp.Open "POST"، m_url، false
XmlHttp.SetRequestHeader "نوع المحتوى"، "نص/xml"
XmlHttp.أرسل XmlDoc
'Response.Write strAnsi2Unicode(xmlhttp.responseBody)
إذا كان GetXmlDoc.load(XmlHttp.responseXML) ثم
اضبط m_GetXmlDoc = GetXmlDoc
آخر
messageCode = "خطأ في طلب البيانات!"
الخروج من الباطن
نهاية إذا
تعيين GetXmlDoc = لا شيء
اضبط XmlHttp = لا شيء
نهاية الفرعية
'------------------------------------------------ -
"طباعة إرسال طلب بيانات XML."
'------------------------------------------------ -
الطباعة الفرعية العامةSendXmlData()
الاستجابة.واضحة
Response.ContentType = "نص/XML"
Response.CharSet = "gb2312"
الاستجابة.انتهاء الصلاحية = 0
Response.اكتب "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine
الاستجابة.اكتب XmlDoc.documentElement.XML
النهاية الفرعية
'---------------------------------------------- -- ---
'طباعة بيانات XML التي تم إرجاعها
'------------------------------------------------ -
الطباعة الفرعية العامة GetXmlData()
الاستجابة.واضحة
Response.ContentType = "نص/XML"
Response.CharSet = "gb2312"
الاستجابة.انتهاء الصلاحية = 0
إذا كان IsObject(m_GetXmlDoc) إذن
Response.اكتب "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine
الاستجابة.اكتب m_GetXmlDoc.documentElement.XML
آخر
Response.اكتب "<?xml version=""1.0"" encoding=""gb2312""?><root></root>"
نهاية إذا
نهاية الفرعية
يحفظ Rem بيانات طلب الإرسال بتنسيق XML في ملف يسمى sendxml_date.txt
العامة الفرعية SaveSendXmlDataToFile ()
اسم الملف خافت، شارع
اسم الملف = "sendxml_" & DateValue (الآن) & ".txt"
شارع = ""
str = str & ""& Now() & vbNewLine
str = str & "-------------------------------------------- --- "& vbNewLine
str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine
str = str & XmlDoc.documentElement.XML & vbNewLine
str = str & "-------------------------------------------- --- "& vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
اسم الملف WriteStringToFile، str
نهاية الفرعية
يقوم Rem بحفظ بيانات XML التي تم إرجاعها إلى ملف يسمى getxml_date.txt
العام الفرعي SaveGetXmlDataToFile ()
اسم الملف خافت، شارع
اسم الملف = "getxml_" وDateValue (الآن) و".txt"
شارع = ""
str = str & ""& Now() & vbNewLine
str = str & "-------------------------------------------- --- "& vbNewLine
إذا كان IsObject(m_GetXmlDoc) إذن
str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine
str = str & m_GetXmlDoc.documentElement.XML
آخر
str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>"
نهاية إذا
str = str & vbNewLine
str = str & "-------------------------------------------- --- "& vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
اسم الملف WriteStringToFile، str
نهاية الفرعية
'------------------------------------------------ -
'احصل على معلومات العقدة لملف XML الذي تم إرجاعه
'XmlClassObj.GetSingleNode("//msg")
'------------------------------------------------ -
الوظيفة العامة GetSingleNode(عقدة)
إذا كان IsObject(m_GetXmlDoc) إذن
GetSingleNode = m_GetXmlDoc.documentElement.selectSingleNode(nodestring).text
آخر
GetSingleNode = ""
نهاية إذا
وظيفة النهاية
'''''''''''''''''نهاية إرسال جزء XML
'''''''''''''''''يبدأ جزء XML المتلقي
'------------------------------------------------ -
'استلام حزمة XML، يتم الحصول على معلومات الخطأ من خلال كائن الرسالة
'------------------------------------------------ -
الوظيفة العامة AcceptHttpData()
خافت XMLdom
تعيين XMLdom = Server.CreateObject("Microsoft.XMLDOM")
XMLdom.Async = خطأ
XMLdom.Load(طلب)
إذا كان XMLdom.parseError.errorCode <> 0 ثم
messageCode = "غير قادر على تلقي البيانات بشكل صحيح" و"Descript_ion:" & XMLdom.parseError.reason & "<br>السطر: " & XMLdom.parseError.Line
تعيين m_XmlDocAccept = Null
آخر
اضبط m_XmlDocAccept = XMLdom
نهاية إذا
وظيفة النهاية
'---------------------------------------------- -- ---
'العودة لتلقي معلومات عقدة حزمة XML
'XmlClassObj.GetSingleNode("//msg")
'------------------------------------------------ -
الوظيفة العامة AcceptSingleNode (عقدة)
إذا كان IsObject(m_XmlDocAccept) إذن
AcceptSingleNode = m_XmlDocAccept.documentElement.selectSingleNode(nodestring).text
آخر
قبول سينجلنود = ""
نهاية إذا
وظيفة النهاية
'------------------------------------------------ -
'اطبع بيانات XML المستلمة من الطرف المتلقي
'------------------------------------------------ -
الطباعة الفرعية العامةAcceptXmlData()
الاستجابة.واضحة
Response.ContentType = "نص/XML"
Response.CharSet = "gb2312"
الاستجابة.انتهاء الصلاحية = 0
إذا كان IsObject(m_XmlDocAccept) إذن
Response.اكتب "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine
Response.Write m_XmlDocAccept.documentElement.XML
آخر
Response.اكتب "<?xml version=""1.0"" encoding=""gb2312""?><root></root>"
نهاية إذا
نهاية الفرعية
يقوم Rem بحفظ بيانات حزمة XML المستلمة في ملف يسمى Acceptxml_date.txt
فرعي عام SaveAcceptXmlDataToFile()
اسم الملف خافت، شارع
اسم الملف = "acceptxml_" & DateValue (الآن) & ".txt"
شارع = ""
str = str & ""& Now() & vbNewLine
str = str & "-------------------------------------------- --- "& vbNewLine
إذا كان IsObject(m_XmlDocAccept) إذن
str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine
str = str & m_XmlDocAccept.documentElement.XML
آخر
str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>"
نهاية إذا
str = str & vbNewLine
str = str & "-------------------------------------------- --- "& vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
اسم الملف WriteStringToFile، str
End Sub
''''''''''''''''''احصل على جزء xml ونهاية
Rem احفظ بيانات تصحيح الأخطاء في ملف يسمى debugnote_date.txt
SaveDebugStringToFile الفرعي العام (debugstr)
اسم الملف خافت، شارع
اسم الملف = "debugnote_" & DateValue (الآن) & ".txt"
شارع = ""
str = str & ""& Now() & vbNewLine
str = str & "-------------------------------------------- --- "& vbNewLine
str = str & debugstr & vbNewLine
str = str & "-------------------------------------------- --- "
str = str & vbNewLine & vbNewLine & vbNewLine
اسم الملف WriteStringToFile، str
End Sub
'نهاية الطريقة العامة---------------------------
نهاية الفئة
%>
حالة الاختبار:
sendxml.asp
<%
الخيار
استجابة صريحة. المخزن المؤقت = صحيح
الاستجابة.انتهاء الصلاحية=-1
%>
<!--#include file="xmlcls.asp"-->
<%
Const Apisysno = "23498927347234234987"
Const ActionURL = " http://www.shouji138.com/aspnet2/acceptxml.asp " يستجيب Rem لعنوان URL لكتابة الملف
DimXmlClassObj
Set XmlClassObj = new XmlClass 'إنشاء كائن
XmlClassObj.LoadXmlFromString("<?xml version=""1.0"" encoding=""gb2312""?><root/>") 'املأ كائن XMLDOC بأحرف xml واستخدمه لإرسال xml
XmlClassObj.URL = ActionURL 'قم بتعيين عنوان url للاستجابة
ريم تنسيق XML
Rem "<?xml version="1.0" encoding="gb2312"?>
ريم <الجذر>
ريم <sysno></sysno>
ريم <اسم المستخدم></اسم المستخدم>
ريم <pwd></pwd>
ريم <البريد الإلكتروني></البريد الإلكتروني>
ريم <اسم الصفحة></اسم الصفحة>
ريم <pageurl></pageurl>
ريم </الجذر>
XmlClassObj.NodeValue "sysno"،Apisysno،0،False
XmlClassObj.NodeValue "username"، "testusername"، 0، False
XmlClassObj.NodeValue "pwd"، "pwd"، 0، False
XmlClassObj.NodeValue "email"، " [email protected]"، 0، خطأ
XmlClassObj.NodeValue "pagename"، "site"، 0، False
XmlClassObj.NodeValue "pageurl"، http://www.shouji138.com"،1، False
)
'احفظ حزمة قاعدة بيانات xml المرسلة في
ملف txt .PrintGetXmlData() 'اطبع بيانات xml المستلمة
'response.write XmlClassObj.Message' رسالة خطأ في الطباعة
XmlClassObj.SaveGetXmlDataToFile() 'احفظ قاعدة بيانات xml المستلمة في ملف txt
Response.write XmlClassObj.GetSingleNode("//message") 'عرض قيمة عقدة الرسالة لبيانات XML المستلمة
Set XmlClassObj = لا شيء 'تدمير مثيل الكائن
%>
قبولxml.asp
<%
واجهة تسجيل مستخدم Rem Api
%>
<%
الاستجابة.انتهاء الصلاحية= -1
Response.Addheader "pragma"، "لا يوجد ذاكرة تخزين مؤقت"
Response.AddHeader "التحكم في ذاكرة التخزين المؤقت"، "لا يوجد مخزن"
%>
<!--#تضمين الملف="xmlcls.asp"-->
<%
ريم تنسيق XML
Rem "<?xml version="1.0" encoding="gb2312"?>
ريم <الجذر>
ريم <sysno></sysno>
ريم <اسم المستخدم></اسم المستخدم>
ريم <pwd></pwd>
ريم <البريد الإلكتروني></البريد الإلكتروني>
ريم <اسم الصفحة></اسم الصفحة>
ريم <pageurl></pageurl>
ريم </الجذر>
Const Apisysno = "23498927347234234987"
على خطأ استئناف التالي
DimXmlClassObj
Set XmlClassObj = new XmlClass 'إنشاء كائن
XmlClassObj.AcceptHttpData() 'تلقي بيانات XML
XmlClassObj.SaveAcceptXmlDataToFile() 'احفظ بيانات XML المستلمة في ملف txt
خطأ. واضح
رسالة خافتة
Dim sysno,username,pwd,email,PageName,PageURL
sysno = XmlClassObj.AcceptSingleNode("//sysno")
اسم المستخدم = XmlClassObj.AcceptSingleNode("//اسم المستخدم")
pwd = XmlClassObj.AcceptSingleNode("//pwd")
البريد الإلكتروني = XmlClassObj.AcceptSingleNode("//email")
PageName = XmlClassObj.AcceptSingleNode("//pagename")
PageURL = XmlClassObj.AcceptSingleNode("//pageurl")
XmlClassObj.SaveDebugStringToFile("sysno=" & sysno) 'حفظ لتصحيح ملف السجل
إذا أخطأت ثم
message = message & Err.Descript_ion
آخر
خطأ. واضح
إذا sysno <> Apisysno ثم
message = "من فضلك لا تستخدمه بشكل غير قانوني!"
آخر
message = regUser(اسم المستخدم,pwd,البريد الإلكتروني,PageName,PageURL)
نهاية إذا
نهاية إذا
'XmlClassObj.SaveDebugStringToFile("message=" & message) 'احفظ قيمة الرسالة في ملف سجل التصحيح
Set XmlClassObj = Nothing 'تدمير مثيل الكائن
Response.ContentType = "text/xml" 'إخراج دفق بيانات XML إلى المرسل
Response.Charset = "gb2312"
الاستجابة.واضحة
Response.اكتب "<?xml version=""1.0"" encoding=""gb2312""?>" & vbnewline
الاستجابة.اكتب "<root>" & vbnewline
Response.اكتب "<message>" & message & "</message>" & vbnewline
Response.اكتب "<nowtime>" & Now() & "</nowtime>" & vbnewline
Response.اكتب "</root>" ووظيفة vbnewline
regUser(username,pwd,email,PageName,PageURL)
'''''''''''''''
''''''''''''''
''''''''''''''
'تشغيل قاعدة بيانات المستخدمين المسجلين
''''''''''''''
''''''''''''
regUser = "موافق"
وظيفة النهاية
%>
عنوان التنزيل:/u/info_img/2009-06/25/Xmlcls.rar
عنوان العرض التوضيحي:http://www.shouji138.com/aspnet2/sendxml.asp