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 |