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 |