この ASP クラスは、XML パッケージの送受信を処理するために使用できます。さまざまな異種システム間の API インターフェイス間の通信や、Web サービスの呼び出しと受信の処理に使用できます。
財産:
XML を送信するための
文字列
書き込み専用
メッセージ: システム エラー メッセージ
弦
読み取り専用
XmlNode: 送信されたパッケージ XML 内のノードの値を取得します。
弦
読み取り専用パラメータ: Str: ノード名
GetXmlData: 返された XML データ オブジェクトを取得します。
XMLDom
読み取り専用
メソッド:
LoadXmlFromFile: XmlDoc オブジェクト パラメータを入力します。 Path: 外部 XML ファイルからの xml パス
Void
LoadXmlFromString: XmlDoc オブジェクト パラメーター Str:xml 文字列に文字列を入力します。
空所
NodeValue はノードのパラメータを設定します
パラメータ
NodeName ノード名
NodeText 値
NodeType 保存タイプ [text=0,cdata=1]
blnEncode エンコードするかどうか [true, false]
空所
SendHttpData: XML パッケージの送信
PrintSendXmlData: 送信要求 XML データの印刷
PrintGetXmlData: 返信 XML データの印刷
SaveSendXmlDataToFile: 送信要求 XML データをファイルに保存します。ファイル名は sendxml_date.txt です。
SaveGetXmlDataToFile: 返された XML データをファイルに保存します。ファイル名は getxml_date.txt です。
GetSingleNode: ノード情報パラメーターを取得します。返された xml の Nodestring: ノード名
AcceptHttpData: XML パッケージを受信します。エラー情報は、Message オブジェクトを通じて取得されます。
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.shoji138.com
'バージョン:ver1.0
'------------------------------------------------ -
クラス XmlClass
Rem 変数の定義
プライベート XmlDoc、XmlHttp
プライベートメッセージコード、SysKey、XmlPath
プライベート m_GetXmlDoc,m_url
プライベート m_XmlDocAccept
Rem の初期化
プライベートサブクラス_Initialize()
エラー時は次へ再開
メッセージコード = ""
XmlPath = ""
Set XmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0")
XmlDoc.ASYNC = False
エンドサブレム
がオブジェクトを破壊する
プライベートサブクラス_Terminate()
IsObject(XmlDoc) の場合は、XmlDoc = Nothing を設定します
IsObject(m_XmlDocAccept) の場合は、m_XmlDocAccept = Nothing を設定します
IsObject(m_GetXmlDoc) の場合、m_GetXmlDoc = Nothing を設定します
エンドサブ
'パブリック属性の定義を開始します---------------
レムのエラーメッセージ
パブリック プロパティ Get Message()
メッセージ = メッセージコード
終了プロパティ
XMLの送信先アドレスをレムします
Public プロパティ Let URL(str)
m_url = 文字列
終了プロパティ
'パブリック属性定義の終了--------------------------
'プライベートプロセスとメソッドの開始--------------------------
RemロードXML
プライベートサブLoadXmlData()
If XmlPath <> "" then
XmlDoc.Load(XmlPath) ではない場合
XmlDoc.LoadXml "<?xml version=""1.0"" encoding=""gb2312""?><root/>"
終了の場合
それ以外
XmlDoc.LoadXml "<?xml version=""1.0"" encoding=""gb2312""?><root/>"
終了の場合
End Sub
Rem 文字変換
プライベート関数 AnsiToUnicode(ByVal str)
ディム i、j、c、i1、i2、u、fs、f、p
AnsiToUnicode = ""
p = ""
For i = 1 To Len(str)
c = Mid(str, i, 1)
j = AscW(c)
j < 0 の場合
j = j + 65536
終了の場合
j >= 0かつ j <= 128の場合
p = "c" の場合
AnsiToUnicode = " " & AnsiToUnicode
p = "e"
終了の場合
AnsiToUnicode = AnsiToUnicode & c
それ以外
p = "e" の場合
AnsiToUnicode = AnsiToUnicode & " "
p = "c"
終了の場合
AnsiToUnicode = AnsiToUnicode & ("&#" & j & ";")
終了の場合
次
終了関数
Rem 文字変換
プライベート関数 strAnsi2Unicode(asContents)
Dim len1,i,varchar,varasc
strAnsi2Unicode = ""
len1=LenB(内容として)
len1=0 の場合、関数を終了します
i=1からlen1の場合
varchar=MidB(asContents,i,1)
varasc=AscB(varchar)
varasc > 127 の場合
If MidB(asContents,i+1,1)<>"" then
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
終了の場合
i=i+1
それ以外
strAnsi2Unicode = strAnsi2Unicode & Chr(varasc)
終了の場合
次
終了機能
Rem はファイルに文字を追加します
Private Sub WriteStringToFile(ファイル名,str)
エラー時は次へ再開
ディム fs,ts
Set fs= createobject("script_ing.filesystemobject")
IsObject(fs) でない場合は Sub を終了します
Set ts=fs.OpenTextFile(Server.MapPath(ファイル名),8,True)
ts.writeline(str)
ts.close
ts=何も設定しない
fs=何も設定しない
エンドサブ
'プライベートプロセスとメソッドの終了--------------------------
'パブリックメソッドの開始--------------------------
'''''''''' XML 部分を送信して開始します
Rem 外部 XML ファイルから XmlDoc オブジェクトを設定します
パブリック サブ LoadXmlFromFile(パス)
XmlPath = Server.MapPath(パス)
LoadXmlData()
End Sub
Rem は、XmlDoc オブジェクトに文字列を入力します。
パブリック サブ LoadXmlFromString(str)
XmlDoc.LoadXml str
End Sub
Rem NodeValue "appID",AppID,1,False などのノードパラメータを設定します
'------------------------------------------------ -
'パラメータ:
'NodeName ノード名
'NodeText値
'NodeType 保存タイプ [text=0,cdata=1]
'blnEncode エンコードするかどうか [true, false]
'------------------------------------------------ -
Public Sub NodeValue(Byval NodeName,Byval NodeText,Byval NodeType,Byval blnEncode)
Dim ChildNode、CDATASection の作成
ノード名 = Lcase(ノード名)
XmlDoc.documentElement.selectSingleNode(NodeName) が何もない場合
Set ChildNode = XmlDoc.documentElement.appendChild(XmlDoc.createNode(1,NodeName,""))
それ以外
ChildNode = XmlDoc.documentElement.selectSingleNode(NodeName) を設定します。
終了の場合
blnEncode = True の場合
NodeText = AnsiToUnicode(NodeText)
終了の場合
NodeType = 1 の場合
ChildNode.Text = ""
Set CreateCDATASection = XmlDoc.createCDATASection(Replace(NodeText,"]]>","]]>"))
ChildNode.appendChild(createCDATASection)
それ以外
ChildNode.Text = ノードテキスト
終了の場合
エンドサブ
'------------------------------------------------ -
'送信されたパケットXML内のノードの値を取得します
'パラメータ:
'Strノード名
'------------------------------------------------ -
パブリック プロパティ GetXmlNode(ByvalStr)
XmlDoc.documentElement.selectSingleNode(Str) が何もない場合
XmlNode = "NULL"
それ以外
XmlNode = XmlDoc.documentElement.selectSingleNode(Str).text
終了の場合
終了プロパティ
'------------------------------------------------- --- ---
'返されたXMLデータオブジェクトを取得します
'例:
'GetXmlData が NULL でない場合、GetXmlData は XML オブジェクトです
'------------------------------------------------ -
パブリック プロパティ GetGetXmlData()
GetXmlData = m_GetXmlDoc を設定します
終了プロパティ
'------------------------------------------------ -
'xml パッケージをhttp://www.devdao.com/ に送信します
'------------------------------------------------ -
Public Sub SendHttpData()
Dim i、GetXmlDoc、LoadAppid
Set Xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
Set 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データを印刷
'------------------------------------------------ -
Public Sub PrintSendXmlData()
応答.クリア
Response.ContentType = "テキスト/xml"
Response.CharSet = "gb2312"
応答.期限切れ = 0
Response.Write "<?xml version=""1.0""coding=""gb2312""?>"&vbNewLine
Response.Write XmlDoc.documentElement.XML
エンドサブ
'------------------------------------------------- --- ---
'返された XML データを出力します
'------------------------------------------------ -
Public Sub PrintGetXmlData()
応答.クリア
Response.ContentType = "テキスト/xml"
Response.CharSet = "gb2312"
応答.期限切れ = 0
IsObject(m_GetXmlDoc) の場合
Response.Write "<?xml version=""1.0""coding=""gb2312""?>"&vbNewLine
Response.Write m_GetXmlDoc.documentElement.XML
それ以外
Response.Write "<?xml version=""1.0"" encoding=""gb2312""?><root></root>"
終了の場合
エンドサブ
Rem は、送信リクエスト XML データを sendxml_date.txt という名前のファイルに保存します。
Public Sub SaveSendXmlDataToFile()
Dim ファイル名、str
ファイル名 = "sendxml_" & DateValue(now) & ".txt"
str = ""
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 という名前のファイルに保存します。
Public Sub SaveGetXmlDataToFile()
Dim ファイル名、str
ファイル名 = "getxml_" & DateValue(now) & ".txt"
str = ""
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""coding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>"
終了の場合
str = str & vbNewLine
str = str & " ------------------------------------------- --- "&vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
WriteStringToFile ファイル名,str
エンドサブ
'------------------------------------------------ -
'返されたxmlのノード情報を取得
'XmlClassObj.GetSingleNode("//msg")
'------------------------------------------------ -
パブリック関数 GetSingleNode(nodestring)
IsObject(m_GetXmlDoc) の場合
GetSingleNode = m_GetXmlDoc.documentElement.selectSingleNode(nodestring).text
それ以外
GetSingleNode = ""
終了の場合
終了機能
''''''''''''''''''xml 部分の送信終了
''''''''''''''''''受信 XML 部分が開始されます
'------------------------------------------------ -
'XML パッケージを受信、エラー情報は Message オブジェクトを通じて取得されます
'------------------------------------------------ -
パブリック関数 AcceptHttpData()
ディムXMLdom
XMLdom = Server.CreateObject("Microsoft.XMLDOM") を設定します。
XMLdom.Async = False
XMLdom.Load(リクエスト)
XMLdom.parseError.errorCode <> 0 の場合、次に
MessageCode = "データを正しく受信できません" & "Descript_ion: " & XMLdom.parseError.reason & "<br>Line: " & XMLdom.parseError.Line
m_XmlDocAccept = Null を設定します
それ以外
m_XmlDocAccept = XMLdom を設定します
終了の場合
終了関数
'---------------------------------------------- --- ---
'XML パッケージ ノード情報を受信するために戻ります
'XmlClassObj.GetSingleNode("//msg")
'------------------------------------------------ -
パブリック関数 AcceptSingleNode(nodestring)
IsObject(m_XmlDocAccept) の場合
AcceptSingleNode = m_XmlDocAccept.documentElement.selectSingleNode(nodestring).text
それ以外
AcceptSingleNode = ""
終了の場合
終了機能
'------------------------------------------------ -
'受信側で受信したXMLデータを出力します
'------------------------------------------------ -
Public Sub PrintAcceptXmlData()
応答.クリア
Response.ContentType = "テキスト/xml"
Response.CharSet = "gb2312"
応答.期限切れ = 0
IsObject(m_XmlDocAccept) の場合
Response.Write "<?xml version=""1.0""coding=""gb2312""?>"&vbNewLine
Response.Write m_XmlDocAccept.documentElement.XML
それ以外
Response.Write "<?xml version=""1.0"" encoding=""gb2312""?><root></root>"
終了の場合
エンドサブ
Rem は、受信した XML パケット データを acceptxml_date.txt という名前のファイルに保存します。
Public Sub SaveAcceptXmlDataToFile()
Dim ファイル名、str
ファイル名 = "acceptxml_" & DateValue(now) & ".txt"
str = ""
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""coding=""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 という名前のファイルに保存します
Public Sub SaveDebugStringToFile(debugstr)
Dim ファイル名、str
ファイル名 = "debugnote_" & DateValue(now) & ".txt"
str = ""
str = str & ""& Now() & vbNewLine
str = str & " ------------------------------------------- --- "&vbNewLine
str = str & debugstr & vbNewLine
str = str & " ------------------------------------------- ---」
str = str & vbNewLine & vbNewLine & vbNewLine
WriteStringToFile ファイル名,str
End Sub
'パブリックメソッドの終了---------------
End Class
%>
テストケース:
sendxml.asp
<%
オプション明示的
応答.buffer = True
応答.有効期限=-1
%>
<!--#include file="xmlcls.asp"-->
<%
Const Apisysno = "23498927347234234987"
Const ActionURL = " http://www.shoji138.com/aspnet2/acceptxml.asp " Rem はファイル書き込み URL アドレスに応答します
DimXmlClassObj
Set XmlClassObj = new XmlClass 'オブジェクトの作成
XmlClassObj.LoadXmlFromString("<?xml version=""1.0""coding=""gb2312""?><root/>") 'XMLDOC オブジェクトに XML 文字を入力し、それを使用して XML を送信します
XmlClassObj.URL = ActionURL '応答URLを設定します
Rem XML形式
レム "<?xml version="1.0" encoding="gb2312"?>
レム<ルート>
レム<sysno></sysno>
レム <ユーザー名></ユーザー名>
レム<pwd></pwd>
レム<電子メール></電子メール>
レム <ページ名></ページ名>
レム <pageurl></pageurl>
レム</root>
XmlClassObj.NodeValue "sysno",Apisysno,0,False
XmlClassObj.NodeValue "ユーザー名","テストユーザー名",0,False
XmlClassObj.NodeValue "pwd","pwd",0,False
XmlClassObj.NodeValue "電子メール"," [email protected]",0,False
XmlClassObj.NodeValue "ページ名","サイト",0,False
XmlClassObj.NodeValue "pageurl"," http://www.shoji138.com",1,False
)
'送信された XML データベース パッケージを txt
ファイルに保存します。 .PrintGetXmlData() '受信した XML データを印刷します
'response.write XmlClassObj.Message 'エラーメッセージを出力
XmlClassObj.SaveGetXmlDataToFile() '受信したxmlデータベースをtxtファイルに保存します
response.write XmlClassObj.GetSingleNode("//message") '受信したxmlデータのmsgノードの値を表示
Set XmlClassObj = Nothing 'オブジェクト インスタンスを破棄します
%>
acceptxml.asp
<%
Rem APIユーザー登録インターフェース
%>
<%
応答.有効期限= -1
Response.Addheader "プラグマ"、"キャッシュなし"
Response.AddHeader "キャッシュ制御"、"ストアなし"
%>
<!--#Include File="xmlcls.asp"-->
<%
Rem XML形式
レム "<?xml version="1.0" encoding="gb2312"?>
レム<ルート>
レム<sysno></sysno>
レム <ユーザー名></ユーザー名>
レム<pwd></pwd>
レム<電子メール></電子メール>
レム <ページ名></ページ名>
レム <pageurl></pageurl>
レム</root>
Const Apisysno = "23498927347234234987"
エラー時は次へ再開
DimXmlClassObj
Set XmlClassObj = new XmlClass 'オブジェクトの作成
XmlClassObj.AcceptHttpData() 'XML データを受信します
XmlClassObj.SaveAcceptXmlDataToFile() '受信したxmlデータをtxtファイルに保存します
エラークリア
薄暗いメッセージ
Dim sysno、ユーザー名、パスワード、電子メール、ページ名、ページURL
sysno = XmlClassObj.AcceptSingleNode("//sysno")
ユーザー名 = XmlClassObj.AcceptSingleNode("//ユーザー名")
pwd = XmlClassObj.AcceptSingleNode("//pwd")
email = XmlClassObj.AcceptSingleNode("//email")
PageName = XmlClassObj.AcceptSingleNode("//ページ名")
PageURL = XmlClassObj.AcceptSingleNode("//pageurl")
XmlClassObj.SaveDebugStringToFile("sysno=" & sysno) 'デバッグ ログ ファイルに保存
エラーの場合はその後
message = メッセージ & Err.Descript_ion
それ以外
エラークリア
If sysno <> Apisysno then
message = "不正使用しないでください!"
それ以外
message = regUser(ユーザー名,パスワード,電子メール,ページ名,ページURL)
終了の場合
終了の場合
'XmlClassObj.SaveDebugStringToFile("message=" & message) 'メッセージ値をデバッグ ログ ファイルに保存します
Set XmlClassObj = Nothing 'オブジェクト インスタンスを破棄します
Response.ContentType = "text/xml" 'xml データ ストリームを送信者に出力します
Response.Charset = "gb2312"
応答.クリア
Response.Write "<?xml version=""1.0"" encoding=""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)
''''''''''''''''
''''''''''''''''
''''''''''''''''
'データベース登録ユーザーの操作
''''''''''''''''
''''''''''''''
regUser = "OK"
関数の終了
%>
ダウンロード アドレス:/u/info_img/2009-06/25/Xmlcls.rarデモ
アドレス:http://www.shoji138.com/aspnet2/sendxml.asp