반응형

DOM(1)

Tech: /XML·XSL 2008. 6. 26. 10:32

XML Note #4 DOM (1)


1. XMLDOM은 XML Document Object Model로서 XML을 파싱(Parsing)하여 원하는 결과를 추출하거나 원하는 형태의 XML로 변환하기 위해 사용하는 일련의 인터페이스를 말한다.


2. 종류 (자주 사용되는 인터페이스 중심으로)

- DOMDocument : XML을 처리하는 기본 인터페이스 (Microsoft.XMLDOM 또는 MSXML2.DOMDocument)

- XMLHTTP : XML을 HTTP를 이용하여 전송할 때 사용하는 인터페이스 (Microsoft.XMLHTTP 또는 MSXML2.XMLHTTP)

- ServerXMLHTTP : XML을 HTTP를 이용하여 서버간 통신에 사용하는 인터페이스 (MSXML2.ServerXMLHTTP)

- IXMLDOMElement : XML의 각 구성요소의 처리에 사용하는 인터페이스 (MSXML2.IXMLDOMElement)

- IXMLDOMNode : IXMLDOMElement와 유사하나 tree구조에 관계된 처리만 담당하는 인터페이스 (MSXML2.IXMLDOMNode)

- IXMLCDATASection : CDATA의 생성, 삭제 등을 처리하는 인터페이스 (MSXML2.IXMLCDATASection)

- IXMLDOMComment : 주석문의 생성, 삭제 등을 처리하는 인터페이스 (MSXML2.IXMLDOMComment)

- IXMLDOMProcessingInstruction : XML의 처리지시문(PI)을 처리하는 인터페이스 (MSXML2.IXMLDOMProcessingInstruction)

- IXMLDOMEntityReference : XML에서 개체참조를 처리하는 인터페이스 (MSXML2.IXMLDOMEntityReference)


3. Javascript에서의 DOM 사용

- 예제:

   var xmldoc = new ActiveXObject("Microsoft.XMLDOM");


4. VBScript에서의 DOM 사용

- 예제:

   Set xmldoc = CreateObject("Microsoft.XMLDOM")


5. XMLHTTP

XML을 HTTP를 이용하여 서버간 전송할 때 사용하는 인터페이스.

- 보내는 쪽 Javascript 예제

<Script Language="Javascript">

function PostOrder(xmldoc)

{    

var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");

xmlhttp.Open("POST", "http://myserver/orders/processorder.asp", false);

xmlhttp.Send(xmldoc);

return xmlhttp.responseXML;

}

</Script>


- 받는 쪽 ASP - Javascript예제

<%@ Language=javascript %>

<% 

   Response.Expires = -1000;

   // Load the posted XML document.

   var doc = Server.CreateObject("MSXML2.DOMDocument");

   doc.load(Request);

   var result = Server.CreateObject("MSXML2.DOMDocument");

   // Now process the order and build the result document.

   Response.ContentType = "text/xml";

   result.save(Response);

%>


- 보내는 쪽 ASP - VBScript예제

<%

UserID = "thermidor"

Password = "1234"

Name = Escape("이민해") ' VBScript에서 Javascript처럼 쓸 수 있는 함수 : alert, Escape, Unescape

Phone = "016-268-2382"


strXML = "<?xml version=""1.0"" encoding=""euc-kr""?>" & vbcrlf

strXML = strXML & "<AUTH>" & vbcrlf

strXML = strXML & " <USERINFO>" & vbcrlf

strXML = strXML & " <USERID>" & UserID & "</USERID>" & vbcrlf

strXML = strXML & " <PASSWORD>" & Password & "</PASSWORD>" & vbcrlf

strXML = strXML & " <USERNAME>" & Name & "</USERNAME>" & vbcrlf

strXML = strXML & " <PHONE>" & Phone & "</PHONE>" & vbcrlf

strXML = strXML & " </USERINFO>" & vbcrlf

strXML = strXML & "</AUTH>" & vbcrlf


Set objXMLHttp = Server.CreateObject("MSXML2.XMLHTTP")


' Send로 Body 내용을 보낼 경우에는 POST 메서드를 사용하여야 한다.

' Body 내용없이 그냥 호출하는 경우에는 GET을 사용하여도 무방하다.

objXMLHttp.open "POST", "http://localhost/xml/demo2.asp", False

objXMLHttp.Send strXML


' 호출한 ASP의 결과가 일반 HTML이거나 텍스트일 경우에는 다음과 같이 쓴다.

Response.Write Unescape(objXMLHttp.responseText)

Response.End


' 호출한 ASP의 결과가 XML로 출력되는 경우에만 아래의 문장들을 사용할 수 있다.

Set objXMLDOM = objXMLHttp.responseXML


Response.ContentType = "text/xml"

Response.Write objXMLDOM.xml

Response.End


Set objXMLDOM = Nothing

Set objXMLHttp = Nothing

%>


- 받는 쪽 ASP - VBScript예제

<%

Set objXMLDOM = Server.CreateObject("MSXML2.DomDocument")

objXMLDOM.async = False ' XML을 불러들일때 대기하지 않고 실시간으로 바로 불러들인다.

objXMLDOM.resolveExternals = True ' 유효성 검증시 외부 DTD, xsl등의 모든 조건을 포함한다.

objXMLDOM.validateOnParse = True ' 파싱할 때 XML의 유효성을 검증한다.

objXMLDOM.load(Request) ' 여기서 Request를 다른 변수로 받아서 처리하려고 하면 에러가 발생한다.


Set objRoot = objXMLDOM.documentElement

Response.Write objRoot.nodeName & "<br>"

For i = 0 To objRoot.ChildNodes.length - 1

If objRoot.ChildNodes(i).nodeName = "USERINFO" Then

For Each objChildNode In objRoot.ChildNodes(i).ChildNodes

Response.Write "USERINFO : "

Response.Write objChildNode.nodeName & " = " & objChildNode.nodeTypedValue & "<br>"

If objChildNode.nodeName = "USERNAME" Then

objChildNode.nodeTypedValue = Unescape(objChildNode.nodeTypedValue)

End If

Next

End If

Next


objXMLDOM.save ("D:\Projects\XML\test.xml")

Response.End


Set objXMLDOM = Nothing

%>



'Tech: > XML·XSL' 카테고리의 다른 글

XMLHTTP 사용시 주의사항  (0) 2008.06.26
DOM(2)  (0) 2008.06.26
XSL 기본문법(1)  (0) 2008.06.26
XML 기본문법  (0) 2008.06.26
XML 기본개념  (0) 2008.06.26


Posted by 떼르미
,
반응형


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]