'XML'에 해당되는 글 7

  1. 2008.08.11 asp에서 XML 다루는 여러가지 예제 (msxml4 이용-설치) 1
첨부파일 다운받으면  6개의 파일 나옵니다.

writexml.asp - DB 읽어서 xml 파일로 내보내기
readxml.asp - xml 파일 읽어서 보여주기
savexml.asp - 다른 사이트에 있는 xml 파일을 읽어서 로컬에 파일로 저장하기
postxml.asp - HTTP Connection 방식을 이용해서 Post 전송하기
postxml_proc.asp - HTTP Connection 방식으로 받은 Post 값 확인하는 페이지

aaa.xml - xml 파일

참고로 msxml4.msi 설치 필요합니다.




writexml.asp

<?xml version="1.0" encoding="EUC-KR" ?>

<%

    Dim objxml

    Dim nodeCrs

    Dim rs

   

    Dim DBCon

    Dim strConn

    Dim strQry

   

    ' DB 접속

    strConn = strConn&"Provider=SQLOLEDB.1;Persist Security Info=True;"

    strConn = strConn&"Data Source=;"     ' Server Name

    strConn = strConn&"User ID=;"                ' User ID

    strConn = strConn&"Password=;"     ' User Password

    strConn = strConn&"Initial Catalog=;" ' DataBase

    Set DBCon = Server.CreateObject("ADODB.Connection")

    DBCon.Open strConn    


   

    ' XML DOM 객체 생성

    Set objxml = Server.CreateObject("Msxml2.DOMDocument")

    Set nodeCourses = objxml.CreateElement("courses")

    objxml.AppendChild(nodeCourses)

       

    szQry = "select crs_idx, crs_nm, edu_sv_nm, regdate from tb_course"

    Set rs = DBCon.Execute(szQry)

    Do until rs.EOF

        db_crs_idx  = rs(0)

        db_crs_nm   = rs(1)

        db_edu_sv_nm= rs(2)

        db_regdate  = rs(3)

       

        Set nodeCourse = objxml.CreateElement("course")

        nodeCourses.AppendChild(nodeCourse)

       

        set nodeCrs_idx = objxml.CreateElement("crs_idx") '

        set nodeCrs_nm = objxml.CreateElement("crs_nm") '

        set nodeEdu_sv_nm =  objxml.CreateElement("edu_sv_nm")

        set nodeRegdate =  objxml.CreateElement("regdate")

       

        nodeCourse.AppendChild(nodeCrs_idx)

        nodeCourse.AppendChild(nodeCrs_nm)

        nodeCourse.AppendChild(nodeEdu_sv_nm)

        nodeCourse.AppendChild(nodeRegdate)

       

        ' CDATA 타입 정의

        nodeCrs_nm.AppendChild(objxml.createCDATASection("crs_nm_cdata"))

       

        nodeCourse.childnodes(0).text = db_crs_idx

        nodeCrs_nm.childnodes(0).text = db_crs_nm

        nodeCourse.childnodes(2).text = db_edu_sv_nm

        nodeCourse.childnodes(3).text = db_regdate

       

        rs.movenext

    loop


    Response.ContentType = "text/xml"

    Response.Write objxml.xml

    Set objxml = nothing

%>


readxml.asp

<%

    Dim strOut

    Dim obj_xmldom : Set obj_xmldom = CreateObject("Microsoft.XMLDOM")

    obj_xmldom.Load "C:\Inetpub\wwwroot\xml\aaa.xml"


    Set courses = obj_xmldom.DocumentElement

   

    For i = 0 to courses.Childnodes.length - 1

        Set course = courses.Childnodes(i)

       

        crs_idx    = course.Childnodes(0).Text

        crs_nm     = course.Childnodes(1).Text

        edu_sv_nm  = course.Childnodes(2).Text

        regdate    = course.Childnodes(3).Text

       

        strOut = strOut & crs_idx & vbCrLf

        strOut = strOut & crs_nm & vbCrLf

        strOut = strOut & edu_sv_nm & vbCrLf & vbCrLf & vbCrLf

        strOut = strOut & regdate & vbCrLf

       

        response.write "crs_idx : " & crs_idx & "<br>"

        response.write "crs_nm : " & (crs_nm) & "<br>"

        response.write "edu_sv_nm : " & edu_sv_nm & "<br>"

        response.write "regdate : " & regdate & "<hr>"

    Next

    Set obj_xmldom = nothing


%>

<textarea style="width:800;height:500">

    <%=strOut%>

</textarea>


savexml.asp

<!--METADATA TYPE="typelib" FILE="c:\program files\common files\system\ado\msado15.dll"-->

<%

   

    '---------------------------------------------------------

    ' xml 데이타를 로컬에 저장

    '---------------------------------------------------------'

    Sub SaveXML(ByVal xmlData, ByVal filePath)

    On Error Resume Next    

        Dim obj_stm : Set obj_stm = Server.CreateObject("ADODB.Stream")

        Dim retVal

       

        obj_stm.Open

        obj_stm.WriteText(xmlData)

        obj_stm.SaveToFile filePath, adSaveCreateOverWrite

       

        obj_stm.Close

        Set obj_stm = nothing

       

        if Err.Number <> 0 then

            Response.Write "SaveXML : " & Err.Description & " - 경로를 확인하세요."

        end if

    End Sub

   

    '---------------------------------------------------------

    ' xml 데이타를 가져오기

    '---------------------------------------------------------'

    Function GetXML(ByVal szUrl)

    On Error Resume Next

        Dim obj_xml : Set obj_xml = CreateObject("MSXML2.XMLHTTP.4.0")

        Dim xmlData

   

        obj_xml.Open "GET",szUrl, false

        obj_xml.setRequestHeader "Accept-Language","ko"

        obj_xml.Send

        xmlData = obj_xml.responseXML.xml

   

        Set obj_xml = nothing

        if Trim(xmlData) = "" then xmlData = "GetXML : 데이타를 받지 못했습니다."

        GetXML = xmlData

    End Function

   

    ' 웹상의 xml 파일 정보를 읽어들여 a란 변수에 저장

    a = GetXML("http://localhost/xml/1writexml.asp")

   

    ' a란 변수에 저장되어있는 xml 정보를 로컬PC에 저장

    Call SaveXML(a, "c:\desktop\fdsa\aa.xml")

   

%>


postxml.asp

<%

    Set obj_xml = CreateObject("MSXML2.XMLHTTP.4.0")

   

    szUrl = "http://localhost/xml/postxml_proc.asp"

    obj_xml.Open "POST",szUrl, false

    obj_xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

    obj_xml.setRequestHeader "Accept-Language","ko"


    obj_xml.Send("&fieldname=value&fieldname2=value2")

    readData = obj_xml.responseTEXT

       

    Response.Write readData

%>


postxml_proc.asp

<%

    Response.Write Request.Form & "<hr>"

    Response.Write Request.QueryString & "<hr>"


%>

1



[출처] http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=57&MAEULNO=22&no=1883&page=1