asp处理xml数据的发送接收类.docx
《asp处理xml数据的发送接收类.docx》由会员分享,可在线阅读,更多相关《asp处理xml数据的发送接收类.docx(19页珍藏版)》请在冰豆网上搜索。
asp处理xml数据的发送接收类
属性
名称
类型
读写性
参数
说明
URL
String
只写
发送xml的接收地址
Message
String
只读
系统错误信息
XmlNode
String
只读
Str:
节点名称
获取发送包XML中节点的值
GetXmlData
XMLDom
只读
获取返回XML数据对象
方法:
名称
参数
返回值
说明
LoadXmlFromFile
Path:
xml路径
Void
从外部xml文件填充XmlDoc对象
LoadXmlFromString
Str:
xml字符串
Void
用字符串填充XmlDoc对象
NodeValue
NodeName节点名NodeText值NodeType保存类型[text=0,cdata=1]blnEncode是否编码[true,false]
Void
设置node的参数
SendHttpData
Void
发送xml包
PrintSendXmlData
Void
打印发送请求XML数据
PrintGetXmlData
Void
打印返回XML数据
SaveSendXmlDataToFile
Void
保存发送请求xml数据到文件,文件名为sendxml_日期.txt
SaveGetXmlDataToFile
Void
保存返回XML数据到文件,文件名为getxml_日期.txt
GetSingleNode
Nodestring:
节点名
String
获取返回xml的节点信息
AcceptHttpData
Void
接收XML包,错误信息通过Message对象获取
AcceptSingleNode
Nodestring:
节点名
String
返回接收XML包节点信息
PrintAcceptXmlData
Void
打印接收端接收到的XML数据
SaveAcceptXmlDataToFile
Void
保存接收的XML包数据到文件,文件名为acceptxml_日期.txt
SaveDebugStringToFile
Debugstr:
调试信息
Void
保存调试数据到文件,文件名为debugnote_日期.txt
本asp类可以用来处理xml包的发送与接收。
可用于各种异构系统之间API接口间通讯,以及处理WebService的调用与接收。
属性:
URL:
发送xml的接收地址
String
只写
Message:
系统错误信息
String
只读
XmlNode:
获取发送包XML中节点的值
String
只读
参数:
Str:
节点名称
GetXmlData:
获取返回XML数据对象
XMLDom
只读
方法:
LoadXmlFromFile:
从外部xml文件填充XmlDoc对象
参数Path:
xml路径
Void
LoadXmlFromString:
用字符串填充XmlDoc对象
参数Str:
xml字符串
Void
NodeValue设置node的参数
参数
NodeName节点名
NodeText值
NodeType保存类型[text=0,cdata=1]
blnEncode是否编码[true,false]
Void
SendHttpData:
发送xml包
PrintSendXmlData:
打印发送请求XML数据
PrintGetXmlData:
打印返回XML数据
SaveSendXmlDataToFile:
保存发送请求xml数据到文件,文件名为sendxml_日期.txt
SaveGetXmlDataToFile:
保存返回XML数据到文件,文件名为getxml_日期.txt
GetSingleNode:
获取返回xml的节点信息
参数Nodestring:
节点名
AcceptHttpData:
接收XML包,错误信息通过Message对象获取
AcceptSingleNode:
返回接收XML包节点信息
参数Nodestring:
节点名
PrintAcceptXmlData:
打印接收端接收到的XML数据
SaveAcceptXmlDataToFile:
保存接收的XML包数据到文件,文件名为acceptxml_日期.txt
SaveDebugStringToFile:
保存调试数据到文件,文件名为debugnote_日期.txt
参数Debugstr:
调试信息
代码:
xmlcls.asp
<%
Rem处理xml数据的发送、接收类
'--------------------------------------------------
'转载的时候请保留版权信息
'作者:
walkman
'公司:
步步为赢科技有限责任公司
'网址:
'版本:
ver1.0
'--------------------------------------------------
ClassXmlClass
Rem变量定义
PrivateXmlDoc,XmlHttp
PrivateMessageCode,SysKey,XmlPath
Privatem_GetXmlDoc,m_url
Privatem_XmlDocAccept
Rem初始化
PrivateSubClass_Initialize()
OnErrorResumeNext
MessageCode=""
XmlPath=""
SetXmlDoc=Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0")
XmlDoc.ASYNC=False
EndSub
Rem销毁对象
PrivateSubClass_Terminate()
IfIsObject(XmlDoc)ThenSetXmlDoc=Nothing
IfIsObject(m_XmlDocAccept)ThenSetm_XmlDocAccept=Nothing
IfIsObject(m_GetXmlDoc)ThenSetm_GetXmlDoc=Nothing
EndSub
'公共属性定义开始--------------------------
Rem错误信息
PublicPropertyGetMessage()
Message=MessageCode
EndProperty
Rem发送xml的地址
PublicPropertyLetURL(str)
m_url=str
EndProperty
'公共属性定义结束--------------------------
'私有过程、方法开始--------------------------
Rem加载xml
PrivateSubLoadXmlData()
IfXmlPath<>""Then
IfNotXmlDoc.Load(XmlPath)Then
XmlDoc.LoadXml"
xmlversion=""1.0""encoding=""gb2312""?
>"
EndIf
Else
XmlDoc.LoadXml"
xmlversion=""1.0""encoding=""gb2312""?
>"
EndIf
EndSub
Rem字符转化
PrivateFunctionAnsiToUnicode(ByValstr)
Dimi,j,c,i1,i2,u,fs,f,p
AnsiToUnicode=""
p=""
Fori=1ToLen(str)
c=Mid(str,i,1)
j=AscW(c)
Ifj<0Then
j=j+65536
EndIf
Ifj>=0Andj<=128Then
Ifp="c"Then
AnsiToUnicode=""&AnsiToUnicode
p="e"
EndIf
AnsiToUnicode=AnsiToUnicode&c
Else
Ifp="e"Then
AnsiToUnicode=AnsiToUnicode&""
p="c"
EndIf
AnsiToUnicode=AnsiToUnicode&(""&j&";")
EndIf
Next
EndFunction
Rem字符转化
PrivateFunctionstrAnsi2Unicode(asContents)
Dimlen1,i,varchar,varasc
strAnsi2Unicode=""
len1=LenB(asContents)
Iflen1=0ThenExitFunction
Fori=1tolen1
varchar=MidB(asContents,i,1)
varasc=AscB(varchar)
Ifvarasc>127Then
IfMidB(asContents,i+1,1)<>""Then
strAnsi2Unicode=strAnsi2Unicode&chr(ascw(midb(asContents,i+1,1)&varchar))
EndIf
i=i+1
Else
strAnsi2Unicode=strAnsi2Unicode&Chr(varasc)
EndIf
Next
EndFunction
Rem往文件中追加字符
PrivateSubWriteStringToFile(filename,str)
OnErrorResumeNext
Dimfs,ts
Setfs=createobject("script_ing.filesystemobject")
IfNotIsObject(fs)ThenExitSub
Setts=fs.OpenTextFile(Server.MapPath(filename),8,True)
ts.writeline(str)
ts.close
Setts=Nothing
Setfs=Nothing
EndSub
'私有过程、方法结束--------------------------
'公共方法开始--------------------------
'''''''''''发送xml部分开始
Rem从外部xml文件填充XmlDoc对象
PublicSubLoadXmlFromFile(path)
XmlPath=Server.MapPath(path)
LoadXmlData()
EndSub
Rem用字符串填充XmlDoc对象
PublicSubLoadXmlFromString(str)
XmlDoc.LoadXmlstr
EndSub
Rem设置node的参数如NodeValue"appID",AppID,1,False
'--------------------------------------------------
'参数:
'NodeName节点名
'NodeText值
'NodeType保存类型[text=0,cdata=1]
'blnEncode是否编码[true,false]
'--------------------------------------------------
PublicSubNodeValue(ByvalNodeName,ByvalNodeText,ByvalNodeType,ByvalblnEncode)
DimChildNode,CreateCDATASection
NodeName=Lcase(NodeName)
IfXmlDoc.documentElement.selectSingleNode(NodeName)isnothingThen
SetChildNode=XmlDoc.documentElement.appendChild(XmlDoc.createNode(1,NodeName,""))
Else
SetChildNode=XmlDoc.documentElement.selectSingleNode(NodeName)
EndIf
IfblnEncode=TrueThen
NodeText=AnsiToUnicode(NodeText)
EndIf
IfNodeType=1Then
ChildNode.Text=""
SetCreateCDATASection=XmlDoc.createCDATASection(Replace(NodeText,"]]>","]]>"))
ChildNode.appendChild(createCDATASection)
Else
ChildNode.Text=NodeText
EndIf
EndSub
'--------------------------------------------------
'获取发送包XML中节点的值
'参数:
'Str节点名
'--------------------------------------------------
PublicPropertyGetXmlNode(ByvalStr)
IfXmlDoc.documentElement.selectSingleNode(Str)isNothingThen
XmlNode="Null"
Else
XmlNode=XmlDoc.documentElement.selectSingleNode(Str).text
EndIf
EndProperty
'--------------------------------------------------
'获取返回XML数据对象
'例:
'当GetXmlData不为NULL时,GetXmlData为XML对象
'--------------------------------------------------
PublicPropertyGetGetXmlData()
SetGetXmlData=m_GetXmlDoc
EndProperty
'--------------------------------------------------
'发送xml包
'--------------------------------------------------
PublicSubSendHttpData()
Dimi,GetXmlDoc,LoadAppid
SetXmlhttp=Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
SetGetXmlDoc=Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0")'返回xml包
XmlHttp.Open"POST",m_url,false
XmlHttp.SetRequestHeader"content-type","text/xml"
XmlHttp.SendXmlDoc
'Response.WritestrAnsi2Unicode(xmlhttp.responseBody)
IfGetXmlDoc.load(XmlHttp.responseXML)Then
Setm_GetXmlDoc=GetXmlDoc
Else
MessageCode="请求数据错误!
"
ExitSub
EndIf
SetGetXmlDoc=Nothing
SetXmlHttp=Nothing
EndSub
'--------------------------------------------------
'打印发送请求XML数据
'--------------------------------------------------
PublicSubPrintSendXmlData()
Response.Clear
Response.ContentType="text/xml"
Response.CharSet="gb2312"
Response.Expires=0
Response.Write"
xmlversion=""1.0""encoding=""gb2312""?
>"&vbNewLine
Response.WriteXmlDoc.documentElement.XML
EndSub
'--------------------------------------------------
'打印返回XML数据
'--------------------------------------------------
PublicSubPrintGetXmlData()
Response.Clear
Response.ContentType="text/xml"
Response.CharSet="gb2312"
Response.Expires=0
IfIsObject(m_GetXmlDoc)Then
Response.Write"
xmlversion=""1.0""encoding=""gb2312""?
>"&vbNewLine
Response.Writem_GetXmlDoc.documentElement.XML
Else
Response.Write"
xmlversion=""1.0""encoding=""gb2312""?
>"
EndIf
EndSub
Rem保存发送请求xml数据到文件,文件名为sendxml_日期.txt
PublicSubSaveSendXmlDataToFile()
Dimfilename,str
filename="sendxml_"&DateValue(now)&".txt"
str=""
str=str&""&Now()&vbNewLine
str=str&"---------------------------------------------"&vbNewLine
str=str&"
xmlversion=""1.0""encoding=""gb2312""?
>"&vbNewLine
str=str&XmlDoc.documentElement.XML&vbNewLine
str=str&"---------------------------------------------"&vbNewLine
str=str&vbNewLine&vbNewLine&vbNewLine
WriteStringToFilefilename,str
EndSub
Rem保存返回XML数据到文件,文件名为getxml_日期.txt
PublicSubSaveGetXmlDataToFile()
Dimfilename,str
filename="getxml_"&DateValue(now)&".txt"
str=""
str=str&""&Now()&vbNewLine
str=str&"---------------------------------------------"&vbNewLine
IfIsObject(m_GetXmlDoc)Then
str=str&"
xmlversion=""1.0""encoding=""gb2312""?
>"&vbNewLine
str=str&m_GetXmlDoc.documentElement.XML
Else
str=str&"
xmlversion=""1.0""encoding=""gb2312""?
>"&vbNewLine&""&vbNewLine&""
EndIf
str=str&vbNewLine
str=str&"---------------------------------------------"&vbNewLine
str=str&vbNewLine&vbNewLine&vbNewLine
WriteStringToFilefilename,str
EndSub
'--------------------------------------------------
'获取返回xml的节点信息
'XmlClassObj.GetSingleNode("//msg")
'--------------------------------------------------
PublicFunctionGetSingleNode(nodestring)
IfIsObject(m_GetXmlDoc)Then
GetSingleNode=m_GetXmlDoc.documentElement.selectSingleNode(nodestring).text
Else
GetSingleNode=""
EndIf
EndFunction
''''''''''''''''''发送xml部分结束
''''''''''''''''''接收xml部分开始
'--------------------------------------------------
'接收XML包,错误信息通过Message对象获取
'--------------------------------------------------
PublicFunctionAcceptHttpData()
D