이 asp 클래스는 xml 패키지의 전송 및 수신을 처리하는 데 사용할 수 있습니다. 다양한 이기종 시스템 간의 API 인터페이스 간 통신, 웹 서비스 호출 및 수신 처리에 사용될 수 있습니다.
재산:
xml 전송을 위한
수신 주소문자열
쓰기 전용
메시지: 시스템 오류 메시지
끈
읽기 전용
XmlNode: 전송된 패키지 XML에서 노드 값을 가져옵니다.
끈
읽기 전용 매개변수: Str: 노드 이름
GetXmlData: 반환된 XML 데이터 개체 가져오기
XMLDom
읽기 전용
메서드:
LoadXmlFromFile: XmlDoc 개체 매개 변수 경로를 입력합니다. 외부 xml 파일의 xml 경로
Void
LoadXmlFromString: XmlDoc 개체 매개변수 Str:xml 문자열을 문자열로 채웁니다.
무효의
NodeValue는 노드의 매개변수를 설정합니다.
Parameter
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 패키지 수신, 메시지 개체를 통해 오류 정보 가져오기
AcceptSingleNode: 반환 수신된 XML 패키지 노드 정보 Parameter 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
'버전: ver1.0
'------------------------------------------------ -
클래스 XmlClass
Rem 변수 정의
비공개 XmlDoc,XmlHttp
개인 메시지 코드, SysKey, 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 = Nothing으로 설정
IsObject(m_XmlDocAccept)인 경우 m_XmlDocAccept = Nothing으로 설정합니다.
IsObject(m_GetXmlDoc)인 경우 m_GetXmlDoc = Nothing으로 설정합니다.
서브 끝
'공개 속성 정의가 시작됩니다---------------
렘 오류 메시지
공용 속성 메시지 가져오기()
메시지 = 메시지코드
끝 속성
XML을 보낼 주소를 Rem으로 보내세요.
공공 재산 Let URL(str)
m_url = 문자열
끝 속성
'공개 속성 정의 끝---------------
'프라이빗 프로세스 및 메소드 시작----------------------------
렘 로드 XML
개인 하위 LoadXmlData()
XmlPath <> ""인 경우
XmlDoc.Load(XmlPath)가 아닌 경우
XmlDoc.LoadXml "<?xml 버전=""1.0"" 인코딩=""gb2312""?><root/>"
종료 조건
또 다른
XmlDoc.LoadXml "<?xml 버전=""1.0"" 인코딩=""gb2312""?><root/>"
종료 조건
End Sub
Rem 문자 변환
개인 함수 AnsiToUnicode(ByVal str)
Dim i, j, c, i1, i2, u, fs, f, p
AnsiToUnicode = ""
피 = ""
i = 1에서 Len(str)으로
c = 중간(str, i, 1)
j = 오름차순(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)
희미한 len1,i,varchar,varasc
strAnsi2Unicode = ""
len1=LenB(컨텐츠로)
len1=0이면 함수 종료
i=1 ~ len1의 경우
varchar=MidB(asContents,i,1)
varasc=AscB(변수 문자)
varasc > 127이면
MidB(asContents,i+1,1)<>"" 그러면
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
종료 조건
나=나+1
또 다른
strAnsi2Unicode = strAnsi2Unicode & Chr(varasc)
종료 조건
다음
기능 종료
Rem은 파일에 문자를 추가합니다.
Private Sub WriteStringToFile(파일 이름,str)
오류 발생 시 다음 재개
희미한 fs,ts
fs= createobject("script_ing.filesystemobject") 설정
IsObject(fs)가 아니면 Sub를 종료합니다.
ts=fs.OpenTextFile(Server.MapPath(파일 이름),8,True) 설정
ts.writeline(str)
ts.닫기
ts=아무것도 설정하지 않음
fs=아무것도 설정하지 않음
서브 끝
'프라이빗 프로세스 및 메소드 종료-------------
'공개 메서드 시작-------------
''''''''''' 시작하려면 xml 부분을 보내세요.
Rem은 외부 XML 파일에서 XmlDoc 개체를 채웁니다.
공용 하위 LoadXmlFromFile(경로)
XmlPath = Server.MapPath(경로)
로드Xml데이터()
End Sub
Rem은 XmlDoc 개체를 문자열로 채웁니다.
공용 하위 LoadXmlFromString(str)
XmlDoc.LoadXml 문자열
End Sub
Rem NodeValue "appID",AppID,1,False와 같은 노드 매개변수 설정
'------------------------------------------------ -
'매개변수:
'NodeName 노드 이름
'NodeText 값
'NodeType 저장 유형 [text=0,cdata=1]
'bln인코딩 여부 [true, false]
'------------------------------------------------ -
공용 하위 노드값(Byval NodeName,Byval NodeText,Byval NodeType,Byval blnEncode)
희미한 하위 노드, CreateCDATASection
NodeName = Lcase(노드이름)
XmlDoc.documentElement.selectSingleNode(NodeName)이 아무것도 아닌 경우
ChildNode 설정 = XmlDoc.documentElement.appendChild(XmlDoc.createNode(1,NodeName,""))
또 다른
ChildNode = XmlDoc.documentElement.selectSingleNode(NodeName) 설정
종료 조건
blnEncode = True이면
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가 NULL이 아닌 경우 GetXmlData는 XML 객체입니다.
'------------------------------------------------ -
공용 속성 GetXmlData() 가져오기
GetXmlData = m_GetXmlDoc 설정
끝 속성
'------------------------------------------------ -
'xml 패키지를 http://www.devdao.com/으로 보냅니다.
'------------------------------------------------ -
공개 하위 SendHttpData()
Dim i,GetXmlDoc,LoadAppid
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 데이터 인쇄
'------------------------------------------------ -
공개 하위 PrintSendXmlData()
응답.지우기
Response.ContentType = "텍스트/xml"
Response.CharSet = "gb2312"
응답.만료 = 0
Response.Write "<?xml version=""1.0"" 인코딩=""gb2312""?>"&vbNewLine
응답.쓰기 XmlDoc.documentElement.XML
끝 하위
'---------------------------------- -- ---
'반환된 XML 데이터를 인쇄합니다.
'------------------------------------------------ -
공개 하위 PrintGetXmlData()
응답.지우기
Response.ContentType = "텍스트/xml"
Response.CharSet = "gb2312"
응답.만료 = 0
IsObject(m_GetXmlDoc)이면
Response.Write "<?xml version=""1.0"" 인코딩=""gb2312""?>"&vbNewLine
응답.쓰기 m_GetXmlDoc.documentElement.XML
또 다른
응답.쓰기 "<?xml version=""1.0"" 인코딩=""gb2312""?><root></root>"
종료 조건
서브 끝
Rem은 전송 요청 xml 데이터를 sendxml_date.txt라는 파일에 저장합니다.
공개 하위 SaveSendXmlDataToFile()
희미한 파일 이름,str
파일 이름 = "sendxml_" & DateValue(현재) & ".txt"
str = ""
str = str & ""& Now() & vbNewLine
str = str & "---------------------------------- --- "& vbNewLine
str = str & "<?xml version=""1.0"" 인코딩=""gb2312""?>" & vbNewLine
str = str & XmlDoc.documentElement.XML & vbNewLine
str = str & "---------------------------------- --- "& vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
WriteStringToFile 파일 이름,str
서브 끝
Rem은 반환된 XML 데이터를 getxml_date.txt라는 파일에 저장합니다.
공개 하위 SaveGetXmlDataToFile()
희미한 파일 이름,str
파일 이름 = "getxml_" & DateValue(현재) & ".txt"
str = ""
str = str & ""& Now() & vbNewLine
str = str & "---------------------------------- --- "& vbNewLine
IsObject(m_GetXmlDoc)이면
str = str & "<?xml version=""1.0"" 인코딩=""gb2312""?>" & vbNewLine
str = str & m_GetXmlDoc.documentElement.XML
또 다른
str = str & "<?xml version=""1.0"" 인코딩=""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 패키지를 수신하면 메시지 객체를 통해 오류 정보를 얻습니다.
'------------------------------------------------ -
공개 함수 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(nodestring)
IsObject(m_XmlDocAccept)이면
AcceptSingleNode = m_XmlDocAccept.documentElement.selectSingleNode(nodestring).text
또 다른
AcceptSingleNode = ""
종료 조건
기능 종료
'------------------------------------------------ -
'수신측에서 받은 XML 데이터를 출력한다.
'------------------------------------------------ -
공개 하위 PrintAcceptXmlData()
응답.지우기
Response.ContentType = "텍스트/xml"
Response.CharSet = "gb2312"
응답.만료 = 0
IsObject(m_XmlDocAccept)이면
Response.Write "<?xml version=""1.0"" 인코딩=""gb2312""?>"&vbNewLine
응답.쓰기 m_XmlDocAccept.documentElement.XML
또 다른
응답.쓰기 "<?xml version=""1.0"" 인코딩=""gb2312""?><root></root>"
종료 조건
서브 끝
Rem은 수신된 XML 패킷 데이터를 acceptxml_date.txt라는 파일에 저장합니다.
공개 하위 SaveAcceptXmlDataToFile()
희미한 파일 이름,str
파일 이름 = "acceptxml_" & DateValue(현재) & ".txt"
str = ""
str = str & ""& Now() & vbNewLine
str = str & "---------------------------------- --- "& vbNewLine
IsObject(m_XmlDocAccept)이면
str = str & "<?xml version=""1.0"" 인코딩=""gb2312""?>" & vbNewLine
str = str & m_XmlDocAccept.documentElement.XML
또 다른
str = str & "<?xml version=""1.0"" 인코딩=""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)
희미한 파일 이름,str
파일 이름 = "debugnote_" & DateValue(현재) & ".txt"
str = ""
str = str & ""& Now() & vbNewLine
str = str & "---------------------------------- --- "& vbNewLine
str = str & debugstr & vbNewLine
str = str & "---------------------------------- --- "
str = str & vbNewLine & vbNewLine & vbNewLine
WriteStringToFile 파일 이름,str
End Sub
'공용 메소드의 끝---------------
클래스 종료
%>
테스트 케이스:
sendxml.asp
<%
옵션 명시적
응답.buffer = True
응답.만료=-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"" 인코딩=""gb2312""?><root/>") 'XmlDOC 개체를 xml 문자로 채우고 이를 사용하여 xml을 보냅니다.
XmlClassObj.URL = ActionURL '응답 URL을 설정합니다.
Rem XML 형식
Rem "<?xml version="1.0" 인코딩="gb2312"?>
렘 <루트>
렘 <sysno></sysno>
Rem <사용자 이름></사용자 이름>
렘 <pwd></pwd>
렘 <email></email>
Rem <페이지 이름></페이지 이름>
렘 <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.shouji138.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 "pragma","no-cache"
Response.AddHeader "캐시 제어","저장 안 함"
%>
<!--#Include File="xmlcls.asp"-->
<%
Rem XML 형식
Rem "<?xml version="1.0" 인코딩="gb2312"?>
렘 <루트>
렘 <sysno></sysno>
Rem <사용자 이름></사용자 이름>
렘 <pwd></pwd>
렘 <email></email>
Rem <페이지 이름></페이지 이름>
렘 <pageurl></pageurl>
렘 </root>
Const Apisysno = "23498927347234234987"
오류 발생 시 다음 재개
DimXmlClassObj
Set XmlClassObj = new XmlClass '객체 생성
XmlClassObj.AcceptHttpData() 'xml 데이터 수신
XmlClassObj.SaveAcceptXmlDataToFile() '수신된 xml 데이터를 txt 파일로 저장합니다.
Err.clear
희미한 메시지
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) '디버그 로그 파일에 저장
오류가 발생한 경우
메시지 = 메시지 & Err.Descript_ion
또 다른
Err.clear
sysno <> Apisysno인 경우 그러면
message = "불법적으로 사용하지 마세요!"
또 다른
메시지 = regUser(사용자 이름, 비밀번호, 이메일, 페이지 이름, 페이지 URL)
종료 조건
종료 조건
'XmlClassObj.SaveDebugStringToFile("message=" & message) '디버그 로그 파일에 메시지 값을 저장합니다.
Set XmlClassObj = Nothing '개체 인스턴스를 삭제합니다.
Response.ContentType = "text/xml" 'Xml 데이터 스트림을 보낸 사람에게 출력합니다.
Response.Charset = "gb2312"
응답.지우기
Response.Write "<?xml version=""1.0"" 인코딩=""gb2312""?>" & vbnewline
응답."<root>" 및 vbnewline 쓰기
응답.Write "<message>" & 메시지 & "</message>" & vbnewline
Response.Write "<nowtime>" & Now() & "</nowtime>" & vbnewline
Response.Write "</root>" & vbnewline
함수 regUser(사용자 이름,pwd,email,PageName,PageURL)
''''''''''''''''
'''''''''''''''
''''''''''''''''
'데이터베이스에 등록된 사용자를 운영
''''''''''''''''
''''''''''''''
regUser = "OK"
기능 종료
%>
다운로드 주소:/u/info_img/2009-06/25/Xmlcls.rar
데모 주소:http://www.shouji138.com/aspnet2/sendxml.asp