Diese Asp-Klasse kann zum Senden und Empfangen von XML-Paketen verwendet werden. Es kann für die Kommunikation zwischen API-Schnittstellen zwischen verschiedenen heterogenen Systemen und für die Verarbeitung des Aufrufs und Empfangs von Webdiensten verwendet werden.
Eigentum:
Empfangsadressenzeichenfolge
zum Senden von XML
Nur schreiben
. Meldung: Systemfehlermeldung
Zeichenfolge
Schreibgeschützter
XmlNode: Ruft den Wert des Knotens im gesendeten Paket-XML ab
Zeichenfolge
Schreibgeschützte Parameter: Str: Knotenname
GetXmlData: Ruft das zurückgegebene XML-Datenobjekt ab
XMLDom
Nur lesen
Methode:
LoadXmlFromFile: Füllen Sie den XmlDoc-Objektparameter Path:xml path aus einer externen XML-Datei
Void
LoadXmlFromString: Füllen Sie den XmlDoc-Objektparameter Str:xml string mit einem String
Leere
NodeValue legt die Parameter des Knotens fest
Parameter
NodeName Knotenname
NodeText Wert
NodeType Speichertyp [text=0,cdata=1]
blnEncode Ob codiert werden soll [true, false]
Leere
SendHttpData: XML-Paket senden
PrintSendXmlData: XML-Daten der Sendeanforderung drucken
PrintGetXmlData: XML-Rückgabedaten drucken
SaveSendXmlDataToFile: XML-Daten der Sendeanforderung in einer Datei speichern, der Dateiname lautet sendxml_date.txt
SaveGetXmlDataToFile: Speichern Sie die zurückgegebenen XML-Daten in einer Datei. Der Dateiname lautet getxml_date.txt.
GetSingleNode: Rufen Sie den Knoteninformationsparameter Nodestring der zurückgegebenen XML ab: Knotenname.
AcceptHttpData: XML-Paket empfangen. Fehlerinformationen werden über das Nachrichtenobjekt
AcceptSingleNode: Return
abgerufendie Knoteninformationen des empfangenen XML-Pakets. Parameter Nodestring: Knotenname.
PrintAcceptXmlData: druckt die vom empfangenden Ende empfangenen XML-Daten.
SaveAcceptXmlDataToFile: speichert die empfangenen XML-Paketdaten in einer Datei. Der Dateiname lautet „acceptxml_date.txt“.
SaveDebugStringToFile: Debugdaten in einer Datei mit dem Namen debugnote_date.txt speichern
Parameter Debugstr: Debugging-Informationen
Code:
xmlcls.asp
<%
Rem kümmert sich um das Senden und Empfangen von XML-Datenklassen
'------------------------------------------------ -
„Bitte bewahren Sie beim Nachdruck die Copyright-Informationen auf.“
'Autor: Walkman
'Firma: Bubuweiying Technology Co., Ltd.
„Website: http://www.shouji138.com
'Version: ver1.0
'------------------------------------------------ -
Klassen-XmlClass
-Rem-Variablendefinition
Privates XmlDoc,XmlHttp
Privater Nachrichtencode, SysKey, XmlPath
Privat m_GetXmlDoc,m_url
Private m_XmlDocAccept
Rem-Initialisierung
Private Sub Class_Initialize()
Bei Fehler Weiter fortsetzen
MessageCode = ""
XmlPath = ""
Setze XmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0")
XmlDoc.ASYNC = Falsch
End Sub
Rem zerstört das Objekt
Private Sub Class_Terminate()
Wenn IsObject(XmlDoc), dann setze XmlDoc = Nothing
Wenn IsObject(m_XmlDocAccept) dann setze m_XmlDocAccept = Nothing
Wenn IsObject(m_GetXmlDoc) dann setze m_GetXmlDoc = Nothing
Sub beenden
'Öffentliche Attributdefinition beginnt------------
Rem-Fehlermeldung
Öffentliches Eigentum Get Message()
Nachricht = Nachrichtencode
End-Eigenschaft
Erinnern Sie sich an die Adresse, an die XML gesendet werden soll
Öffentliches Eigentum Let URL(str)
m_url = str
End-Eigenschaft
'Ende der öffentlichen Attributdefinition-----------
'Privater Prozess und Methodenstart-----------
Rem lädt XML
Private Sub LoadXmlData()
Wenn XmlPath <> "" Dann
Wenn nicht, XmlDoc.Load(XmlPath), dann
XmlDoc.LoadXml "<?xml version=""1.0""kodierung=""gb2312""?><root/>"
Ende wenn
Anders
XmlDoc.LoadXml "<?xml version=""1.0""kodierung=""gb2312""?><root/>"
Ende wenn
Rem-Zeichenkonvertierung
beenden
Private Funktion AnsiToUnicode(ByVal str)
Dim i, j, c, i1, i2, u, fs, f, p
AnsiToUnicode = ""
p = ""
Für i = 1 Zu Len(str)
c = Mid(str, i, 1)
j = AscW(c)
Wenn j < 0, dann
j = j + 65536
Ende wenn
Wenn j >= 0 und j <= 128, dann
Wenn p = „c“, dann
AnsiToUnicode = " " & AnsiToUnicode
p = „e“
Ende wenn
AnsiToUnicode = AnsiToUnicode & c
Anders
Wenn p = „e“, dann
AnsiToUnicode = AnsiToUnicode & " "
p = „c“
Ende wenn
AnsiToUnicode = AnsiToUnicode & ("&#" & j & ";")
Ende wenn
Nächste
die Rem-Zeichenkonvertierung
der Funktion
Private Funktion strAnsi2Unicode(asContents)
Dim len1,i,varchar,varasc
strAnsi2Unicode = ""
len1=LenB(asContents)
Wenn len1=0, dann Funktion beenden
Für i=1 bis len1
varchar=MidB(asContents,i,1)
varasc=AscB(varchar)
Wenn varasc > 127 Dann
Wenn MidB(asContents,i+1,1)<>"" Dann
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
Ende wenn
i=i+1
Anders
strAnsi2Unicode = strAnsi2Unicode & Chr(varasc)
Ende wenn
Nächste
Funktion beenden
Rem hängt Zeichen an die Datei an
Private Sub WriteStringToFile(filename,str)
Bei Fehler Weiter fortsetzen
Dim fs,ts
Setze fs= createobject("script_ing.filesystemobject")
Wenn nicht IsObject(fs), dann Sub beenden
Setze ts=fs.OpenTextFile(Server.MapPath(filename),8,True)
ts.writeline(str)
ts.close
Setze ts=Nothing
Setze fs=Nothing
Sub beenden
'Privater Prozess und Methode Ende-----------
'Öffentliche Methode beginnt-----------
'''''''''''' Senden Sie den XML-Teil an den Start
Füllen Sie das XmlDoc-Objekt nicht aus einer externen XML-Datei
Öffentlicher Sub LoadXmlFromFile(path)
XmlPath = Server.MapPath(Pfad)
LoadXmlData()
End Sub
Rem füllt das XmlDoc-Objekt mit einer Zeichenfolge
Öffentlicher Sub LoadXmlFromString(str)
XmlDoc.LoadXml str
End Sub
Rem Knotenparameter wie NodeValue „appID“,AppID,1,False festlegen
'------------------------------------------------ -
'Parameter:
'NodeName Knotenname
'NodeText-Wert
'NodeType-Speichertyp [text=0,cdata=1]
'blnEncode, ob [true, false] codiert werden soll
'------------------------------------------------ -
Public Sub NodeValue(Byval NodeName,Byval NodeText,Byval NodeType,Byval blnEncode)
Dimmen Sie ChildNode,CreateCDATASection
NodeName = Lcase(NodeName)
Wenn XmlDoc.documentElement.selectSingleNode(NodeName) nichts ist, dann
Set ChildNode = XmlDoc.documentElement.appendChild(XmlDoc.createNode(1,NodeName,""))
Anders
Setze ChildNode = XmlDoc.documentElement.selectSingleNode(NodeName)
Ende wenn
Wenn blnEncode = True, dann
NodeText = AnsiToUnicode(NodeText)
Ende wenn
Wenn NodeType = 1, dann
ChildNode.Text = ""
Setze CreateCDATASection = XmlDoc.createCDATASection(Replace(NodeText,"]]>","]]>"))
ChildNode.appendChild(createCDATASection)
Anders
ChildNode.Text = NodeText
Ende wenn
Sub beenden
'------------------------------------------------ -
'Erhalten Sie den Wert des Knotens im gesendeten Paket-XML
'Parameter:
'Str-Knotenname
'------------------------------------------------ -
Öffentliche Eigenschaft GetXmlNode(ByvalStr)
Wenn XmlDoc.documentElement.selectSingleNode(Str) Nothing ist, dann
XmlNode = "Null"
Anders
XmlNode = XmlDoc.documentElement.selectSingleNode(Str).text
Ende wenn
End-Eigenschaft
'---------------------------------------------- -- ---
'Holen Sie sich das zurückgegebene XML-Datenobjekt
'Beispiel:
„Wenn GetXmlData nicht NULL ist, ist GetXmlData ein XML-Objekt
'------------------------------------------------ -
Öffentliche Eigenschaft Get GetXmlData()
Setzen Sie GetXmlData = m_GetXmlDoc
End-Eigenschaft
'------------------------------------------------ -
'Xml-Paket an http://www.devdao.com/ senden
'------------------------------------------------ -
Öffentlicher Sub SendHttpData()
Dim i,GetXmlDoc,LoadAppid
Setze Xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
Set GetXmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0") ' XML-Paket zurückgeben
XmlHttp.Open „POST“, m_url, false
XmlHttp.SetRequestHeader „content-type“, „text/xml“
XmlHttp.Send XmlDoc
'Response.Write strAnsi2Unicode(xmlhttp.responseBody)
Wenn GetXmlDoc.load(XmlHttp.responseXML) Dann
Setzen Sie m_GetXmlDoc = GetXmlDoc
Anders
MessageCode = „Fehler beim Anfordern von Daten!“
Sub verlassen
Ende wenn
Setzen Sie GetXmlDoc = Nothing
Setze XmlHttp = Nothing
Sub beenden
'------------------------------------------------ -
'XML-Daten der Sendeanforderung drucken
'------------------------------------------------ -
Öffentlicher Sub PrintSendXmlData()
Antwort.Klar
Response.ContentType = "text/xml"
Response.CharSet = "gb2312"
Response.Expires = 0
Response.Write "<?xml version=""1.0"" binding=""gb2312""?>"&vbNewLine
Response.Write XmlDoc.documentElement.XML
End Sub
'---------------------------------------------- -- ---
'Zurückgegebene XML-Daten drucken
'------------------------------------------------ -
Öffentlicher Sub PrintGetXmlData()
Antwort.Klar
Response.ContentType = "text/xml"
Response.CharSet = "gb2312"
Response.Expires = 0
Wenn IsObject(m_GetXmlDoc) Dann
Response.Write "<?xml version=""1.0"" binding=""gb2312""?>"&vbNewLine
Response.Write m_GetXmlDoc.documentElement.XML
Anders
Response.Write „<?xml version=""1.0""kodierung=""gb2312""?><root></root>"
Ende wenn
Sub beenden
Rem speichert die XML-Daten der Sendeanforderung in einer Datei mit dem Namen sendxml_date.txt
Öffentlicher Sub SaveSendXmlDataToFile()
Dimmen Sie Dateiname,str
Dateiname = „sendxml_“ & DateValue(now) & „.txt“
str = ""
str = str & ""& Now() & vbNewLine
str = str & "------------------------------ --- "& vbNewLine
str = str & "<?xml version=""1.0""kodierung=""gb2312""?>" & vbNewLine
str = str & XmlDoc.documentElement.XML & vbNewLine
str = str & "------------------------------ --- "& vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
WriteStringToFile Dateiname,str
Sub beenden
Rem speichert die zurückgegebenen XML-Daten in einer Datei mit dem Namen getxml_date.txt
Öffentlicher Sub SaveGetXmlDataToFile()
Dimmen Sie Dateiname,str
Dateiname = „getxml_“ & DateValue(now) & „.txt“
str = ""
str = str & ""& Now() & vbNewLine
str = str & "------------------------------ --- "& vbNewLine
Wenn IsObject(m_GetXmlDoc) Dann
str = str & "<?xml version=""1.0""kodierung=""gb2312""?>" & vbNewLine
str = str & m_GetXmlDoc.documentElement.XML
Anders
str = str & "<?xml version=""1.0"" binding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>"
Ende wenn
str = str & vbNewLine
str = str & "------------------------------ --- "& vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
WriteStringToFile Dateiname,str
Sub beenden
'------------------------------------------------ -
'Rufen Sie die Knoteninformationen der zurückgegebenen XML-Datei ab
'XmlClassObj.GetSingleNode("//msg")
'------------------------------------------------ -
Öffentliche Funktion GetSingleNode(nodestring)
Wenn IsObject(m_GetXmlDoc) Dann
GetSingleNode = m_GetXmlDoc.documentElement.selectSingleNode(nodestring).text
Anders
GetSingleNode = ""
Ende wenn
Funktion beenden
''''''''''''''''''Ende des gesendeten XML-Teils
''''''''''''''''''Der empfangende XML-Teil wird gestartet
'------------------------------------------------ -
'XML-Paket empfangen, Fehlerinformationen werden über das Message-Objekt abgerufen
'------------------------------------------------ -
Öffentliche Funktion AcceptHttpData()
XMLdom dimmen
Setze XMLdom = Server.CreateObject("Microsoft.XMLDOM")
XMLdom.Async = Falsch
XMLdom.Load(Anfrage)
Wenn XMLdom.parseError.errorCode <> 0, dann
MessageCode = „Daten konnten nicht korrekt empfangen werden“ & „Descript_ion:“ & XMLdom.parseError.reason & „<br>Line:“ & XMLdom.parseError.Line
Setzen Sie m_XmlDocAccept = Null
Anders
Setzen Sie m_XmlDocAccept = XMLdom
Ende wenn
Endfunktion
'---------------------------------------------- -- ---
'Kehren Sie zurück, um Informationen zum XML-Paketknoten zu erhalten
'XmlClassObj.GetSingleNode("//msg")
'------------------------------------------------ -
Öffentliche Funktion AcceptSingleNode(nodestring)
Wenn IsObject(m_XmlDocAccept) Dann
AcceptSingleNode = m_XmlDocAccept.documentElement.selectSingleNode(nodestring).text
Anders
AcceptSingleNode = ""
Ende wenn
Funktion beenden
'------------------------------------------------ -
'Drucken Sie die vom Empfänger empfangenen XML-Daten
'------------------------------------------------ -
Öffentlicher Sub PrintAcceptXmlData()
Antwort.Klar
Response.ContentType = "text/xml"
Response.CharSet = "gb2312"
Response.Expires = 0
Wenn IsObject(m_XmlDocAccept) Dann
Response.Write "<?xml version=""1.0"" binding=""gb2312""?>"&vbNewLine
Response.Write m_XmlDocAccept.documentElement.XML
Anders
Response.Write „<?xml version=""1.0""kodierung=""gb2312""?><root></root>"
Ende wenn
Sub beenden
Rem speichert die empfangenen XML-Paketdaten in einer Datei mit dem Namen „acceptxml_date.txt“.
Öffentlicher Sub SaveAcceptXmlDataToFile()
Dimmen Sie Dateiname,str
Dateiname = „acceptxml_“ & DateValue(now) & „.txt“
str = ""
str = str & ""& Now() & vbNewLine
str = str & "------------------------------ --- "& vbNewLine
Wenn IsObject(m_XmlDocAccept) Dann
str = str & "<?xml version=""1.0""kodierung=""gb2312""?>" & vbNewLine
str = str & m_XmlDocAccept.documentElement.XML
Anders
str = str & "<?xml version=""1.0"" binding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>"
Ende wenn
str = str & vbNewLine
str = str & "------------------------------ --- "& vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
WriteStringToFile Dateiname,str
End Sub
''''''''''''''''Empfangen Sie den XML-Teil und beenden Sie
Rem. Speichern Sie die Debugging-Daten in einer Datei mit dem Namen debugnote_date.txt
Öffentlicher Sub SaveDebugStringToFile(debugstr)
Dimmen Sie Dateiname,str
Dateiname = „debugnote_“ & DateValue(now) & „.txt“
str = ""
str = str & ""& Now() & vbNewLine
str = str & "------------------------------ --- "& vbNewLine
str = str & debugstr & vbNewLine
str = str & "------------------------------ --- "
str = str & vbNewLine & vbNewLine & vbNewLine
WriteStringToFile Dateiname,str
End Sub
'Ende der öffentlichen Methode-----------
Endklasse
%>
Testfall:
sendxml.asp
<%
Option Explicit
Response.buffer = True
Response.Expires=-1
%>
<!--#include file="xmlcls.asp"-->
<%
Const Apisysno = „23498927347234234987“
Const ActionURL = " http://www.shouji138.com/aspnet2/acceptxml.asp " Rem antwortet auf die URL-Adresse des Dateischreibens
DimXmlClassObj
Set XmlClassObj = new XmlClass 'Objekt erstellen
XmlClassObj.LoadXmlFromString("<?xml version=""1.0"" binding=""gb2312""?><root/>") 'Füllen Sie das XMLDOC-Objekt mit XML-Zeichen und verwenden Sie es zum Senden von XML
XmlClassObj.URL = ActionURL 'Legen Sie die Antwort-URL fest
Rem-XML-Format
Rem „<?xml version="1.0"kodierung="gb2312"?>
Rem <root>
Rem <sysno></sysno>
Rem <Benutzername></Benutzername>
Rem <pwd></pwd>
Rem <email></email>
Rem <Seitenname></Seitenname>
Rem <pageurl></pageurl>
Rem </root>
XmlClassObj.NodeValue „sysno“,Apisysno,0,False
XmlClassObj.NodeValue „Benutzername“, „Testbenutzername“, 0, Falsch
XmlClassObj.NodeValue „pwd“, „pwd“,0,False
XmlClassObj.NodeValue „email“, „ [email protected]“,0,False
XmlClassObj.NodeValue „Seitenname“, „Site“, 0, False
XmlClassObj.NodeValue „pageurl“, http://www.shouji138.com“,
1
,
False
'response.write XmlClassObj.Message 'Fehlermeldung drucken
XmlClassObj.SaveGetXmlDataToFile() 'Speichern Sie die empfangene XML-Datenbank in einer TXT-Datei
Response.write XmlClassObj.GetSingleNode("//message") 'Zeigt den Wert des msg-Knotens der empfangenen XML-Daten an
Set XmlClassObj = Nothing 'Objektinstanz zerstören
%>
Acceptxml.asp
<%
Rem API-Benutzerregistrierungsschnittstelle
%>
<%
Response.Expires= -1
Response.Addheader „pragma“, „no-cache“
Response.AddHeader „cache-control“, „no-store“
%>
<!--#Include File="xmlcls.asp"-->
<%
Rem-XML-Format
Rem „<?xml version="1.0"kodierung="gb2312"?>
Rem <root>
Rem <sysno></sysno>
Rem <Benutzername></Benutzername>
Rem <pwd></pwd>
Rem <email></email>
Rem <Seitenname></Seitenname>
Rem <pageurl></pageurl>
Rem </root>
Const Apisysno = „23498927347234234987“
Bei Fehler Weiter fortsetzen
DimXmlClassObj
Set XmlClassObj = new XmlClass 'Objekt erstellen
XmlClassObj.AcceptHttpData() 'Xml-Daten empfangen
XmlClassObj.SaveAcceptXmlDataToFile() 'Speichern Sie die empfangenen XML-Daten in einer TXT-Datei
Fehler klar
Schwache Nachricht
Dimmen Sie sysno,username,pwd,email,PageName,PageURL
sysno = XmlClassObj.AcceptSingleNode("//sysno")
Benutzername = XmlClassObj.AcceptSingleNode("//Benutzername")
pwd = XmlClassObj.AcceptSingleNode("//pwd")
email = XmlClassObj.AcceptSingleNode("//email")
PageName = XmlClassObj.AcceptSingleNode("//Seitenname")
PageURL = XmlClassObj.AcceptSingleNode("//pageurl")
XmlClassObj.SaveDebugStringToFile("sysno=" & sysno) 'In Debug-Protokolldatei speichern
Wenn Sie sich irren, dann
message = message & Err.Descript_ion
Anders
Fehler klar
Wenn sysno <> Apisysno Dann
message = „Bitte nicht illegal verwenden!“
Anders
message = regUser(Benutzername, Passwort, E-Mail, Seitenname, SeitenURL)
Ende wenn
Ende wenn
'XmlClassObj.SaveDebugStringToFile("message=" & message) 'Speichern Sie den Nachrichtenwert in der Debug-Protokolldatei.
Set XmlClassObj = Nothing 'Zerstören Sie die Objektinstanz.
Response.ContentType = "text/xml" 'Geben Sie den XML-Datenstrom an den Absender aus
Response.Charset = "gb2312"
Antwort.Klar
Response.Write „<?xml version=""1.0"" binding=""gb2312""?>" & vbnewline
Response.Write „<root>“ & vbnewline
Response.Write „<message>“ & message & „</message>“ & vbnewline
Response.Write „<nowtime>“ & Now() & „</nowtime>“ & vbnewline
Response.Write „</root>“ & vbnewline
Function regUser(username,pwd,email,PageName,PageURL)
''''''''''''''''''
''''''''''''''''
''''''''''''''''
'Betreiben Sie in der Datenbank registrierte Benutzer
''''''''''''''''
''''''''''''''
regUser = „OK“
Endfunktion
%>
Download-Adresse:/u/info_img/2009-06/25/Xmlcls.rarDemo-Adresse
:http://www.shouji138.com/aspnet2/sendxml.asp