DOM(2)

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

XML Note #5 DOM (2)


1. XML 출력(단순)

- 예제:

Set objDOMDocument = Server.CreateObject("MSXML2.DOMDocument")

objDOMDocument.async = False

objDOMDocument.resolveExternals = True

objDOMDocument.validateOnParse = True

objDOMDocument.Load ("http://localhost/xml/people.xml") 


Response.ContentType = "text/xml"

Response.Write objDOMDocument.xml



2. XML 출력 + XSL 적용

- 예제:

Set objDOMDocument = Server.CreateObject("MSXML2.DOMDocument")

objDOMDocument.async = False

objDOMDocument.resolveExternals = True

objDOMDocument.validateOnParse = True

objDOMDocument.Load ("http://localhost/xml/people.xml") 


Set objDOMStyle = Server.CreateObject("MSXML2.DOMDocument")

objDOMStyle.async = False

objDOMStyle.Load ("http://localhost/xml/people.xsl") 

       

Response.ContentType = "text/xml"

Response.Write objDOMDocument.transformNode(objDOMStyle)



3. DOM 저장

- 예제:

objDOMDocument.save ("d:\Projects\xml\test.xml") ' xml 파일로 저장한다.

objDOMDocument.save (Response) ' 브라우저 화면에 출력한다. (ASP에서만)



4. DOM의 트리구조

- 예제:

<?xml version="1.0"?>

<?xml:stylesheet type="text/xsl" href="person.xsl"?>

<PEOPLE>

<PERSON>

<NAME>John Mark</NAME>

<PHONE>(+ 82)011-123-1234</PHONE>

</PERSON>

<SUPERMAN>

<NAME>thermidor</NAME>

<PHONE>(+ 82)016-268-2382</PHONE>

</SUPERMAN>

</PEOPLE>


이와 같은 XML이 있을 때,

objDOMDocument.firstChild 는 첫번째 문장, 즉, <?xml version="1.0"?>이 된다.

실제적인 노드의 root인 PEOPLE은 objDOMDocument.DocumentElement이다.

하위 node의 갯수는 childNodes.length이므로 위 예제에서는 2가 되고 childNodes는 0과 1을 가진다.

이 예제에서 PERSON node는 0, SUPERMAN node는 1을 가진다.

또한 PERSON node도 역시 새로운 하위 node인 NAME, PHONE을 가지고 있다.

따라서 PERSON의 하위 구성요소인 NAME은 objDOMDocument.DocumentElement.childNodes(0).childNodes(0)이 된다.


node의 값은 nodeTypedValue 또는 Text, 또는 xml로 정의된다.



5. DOM에 구성요소 추가

(1) PI 추가

- 예제:

Dim pi As MSXML2.IXMLDOMProcessingInstruction


Set pi = objDOMDocument.createProcessingInstruction("xml:stylesheet", "type=""text/xsl"" href=""people.xsl""")

objDOMDocument.insertBefore pi, objDOMDocument.childNodes.Item(1)


여기서 childNodes.Item(1)은 childNodes(1)과 같다.


(2) 주석문 추가

- 예제:

Dim objComment As MSXML2.IXMLDOMComment


Set objComment = objDOMDocument.createComment("this is a comment line...")

objDOMDocument.insertBefore objComment, objDOMDocument.childNodes.Item(2)


(3) CDATA 추가

- 예제:

Dim objCData As MSXML2.IXMLDOMCDATASection


Set objCData = objDOMDocument.createCDATASection("#") ' 이것은 <![CDATA[#]]> 이 된다.

Set objComment = objDOMDocument.createComment(objCData.xml, "this is a comment line...")


(4) 새 데이터 추가

- 예제:

Dim objRoot As MSXML2.IXMLDOMNode

Dim objChildNode As MSXML2.IXMLDOMNode


Set objRoot = objDOMDocument.createElement("SUPERMAN")

objDOMDocument.documentElement.appendChild objRoot


Set objChildNode = objDOMDocument.createElement("NAME")

objChildNode.Text = "thermidor"

objRoot.appendChild objChildNode


(5) 개체참조 추가

- 예제:

Dim objEntityRef As MSXML2.IXMLDOMEntityReference


Set objEntityRef = objDOMDocument.createEntityReference("nbsp")

objChildNode.appendChild objEntityRef

objRoot.appendChild objChildNode



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

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


Posted by 떼르미
,


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