[ASP] XML 돔 DOM 파서 활용 예제 용-ILE/VB/ASP , ASPX/C#2008. 5. 15. 20:28
http://suite.tistory.com/ fs 2007.05 에 쓰던거
common.asp souce
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<%
Class SrchInfo
Private Sub Class_Initialize() ' <- 생성자
Dim SERVER_URL
SERVER_URL="http://localhost:6973/test.cgi"
Redim Preserve m_ParamList(1)
m_ParamList(uBound(m_ParamList))=SERVER_URL
End Sub
Private Sub Class_Terminate() ' <- 소멸자
End Sub
'연결 정보 변수
Public m_URL
Public m_ParamList()
'호출 파라미터 할당
Public Sub SetQRY(p_name,p_value)
ReDim preserve m_ParamList(uBound(m_ParamList)+1)
m_ParamList(uBound(m_ParamList))=p_name & "=" & p_value & "&"
m_URL=Join(m_ParamList,"")
End Sub
'결과 정보 변수
public head1
public head1
public head1
public RESULT_DICT()
'헤더 정보 담아오기
public sub GetHeader(ROOT)
head1=ROOT.childNodes(0).Attributes(0).text
head2=ROOT.childNodes(0).childNodes(0).text
head3=ROOT.childNodes(0).childNodes(1).text
End sub
'결과 데이터 담아오기
public sub GetResults(ROOT)
ReDim RESULT_DICT(outcnt-1)
Dim i,DOC_ROOT,ATT_ROOT,start_child
' 데이터 자식로드가 시작되는 번호
start_child=9
For i=0 to outcnt-1
'XML 문서의 doc 시작
Dim doc_num,j
doc_num=i+start_child
Set DOC_ROOT=ROOT.childNodes(0).childNodes(doc_num)
set RESULT_DICT(i)=createobject("scripting.dictionary")
For j=0 To DOC_ROOT.childNodes.length-1
Set ATT_ROOT=DOC_ROOT.childNodes(j)
'값 할당
RESULT_DICT(i).add ATT_ROOT.Attributes(0).text ,ATT_ROOT.text
Next
Next
End sub
End Class
%>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sample.asp 샘플 페이지
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<%@ Language=VBScript %>
<% Option Explicit %>
<!--#include file="common.asp"-->
<HTML>
<META http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<HEAD>
<TITLE>XML ASP 파서 샘플 페이지</TITLE>
</HEAD>
<BODY>
<P>
<%
Dim OB_SrchInfo,xmldoc
' XML DOM 객체를 생성
Set xmldoc=Server.CreateObject("Microsoft.XMLDOM")
xmldoc.async=false
xmldoc.setProperty "ServerHTTPRequest",true
'검색XML 결과를 담기위한 클래스
Set OB_SrchInfo=new SrchInfo
' 쿼리지정
OB_SrchInfo.SetQRY "qry" ,"*"
' 한페이지당 요청 건수
OB_SrchInfo.SetQRY "req_max" ,"10"
' 요청 페이지
OB_SrchInfo.SetQRY "page" ,"1"
' xml 파서 시작
xmldoc.Load OB_SrchInfo.m_URL
Response.Write "<h2> XML 파서 샘플 페이지 </h2>"
Response.Write "<xmp> <XML 호출 URL> :" & OB_SrchInfo.m_URL & "</xmp>"
Dim ROOT
Set ROOT = xmldoc.documentElement
' 검색 XML 에서 헤더정보 담기
OB_SrchInfo.GetHeader ROOT
if(OB_SrchInfo.outcnt=0) then
Response.Write OB_SrchInfo.m_URL & "<br>"
Response.Write "<br><font red=color>검색결과 없음!</font>"
Response.End
end if
' 검색 XML 에서 결과 데이터 담기
OB_SrchInfo.GetResults ROOT
%>
<검색 결과 헤더 정보> : <br>
- 전체건수: <%= OB_SrchInfo.totcnt %> <br>
- 요청건수(outmax값): <%= OB_SrchInfo.maxcnt %> <br>
- 출력건수: <%= OB_SrchInfo.outcnt %> <br>
- 출력페이지번호: <%= OB_SrchInfo.pagenum %> <br>
<p>
<검색 결과 데이터> :
<%
Response.Write "<p>"
Dim i
For i=0 to OB_SrchInfo.outcnt-1
Response.Write "번호:" & i & "<br>"
'OB_SrchInfo.RESULT_DICT(i).item("XML 결과의 필드이름을 입력하여 뽑는다")
Response.Write "^DocId:" & OB_SrchInfo.RESULT_DICT(i).item("^DocId:") & "<br>"
Response.Write "제목:" & OB_SrchInfo.RESULT_DICT(i).item("^DocTitle:") & "<br>"
Response.Write "날짜:" & OB_SrchInfo.RESULT_DICT(i).item("^StartDate:") & "<br>"
Response.Write "<p>"
Next
Set ROOT = nothing
Set OB_SrchInfo = nothing
Set xmldoc = nothing
%>
</BODY>
</HTML>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
이걸 봐서는 ASP 말고 자바 스크립트만 가지고도 할 수 있을 것 같기도하다~~~