내용 목차
본 장에서는 DBMS_XMLDOM 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명한다. DBMS_XMLDOM 패키지는 AIX, Windows, Linux IA64, Solaris x86에서는 지원되지 않는다.
DBMS_XMLDOM은 XML 문서 처리를 위한 DOM API를 제공한다.
다음은 DBMS_XMLDOM 패키지 내에 정의된 상수이다.
ELEMENT_NODE CONSTANT PLS_INTEGER := 1; ATTRIBUTE_NODE CONSTANT PLS_INTEGER := 2; TEXT_NODE CONSTANT PLS_INTEGER := 3; CDATA_SECTION_NODE CONSTANT PLS_INTEGER := 4; ENTITY_REFERENCE_NODE CONSTANT PLS_INTEGER := 5; ENTITY_NODE CONSTANT PLS_INTEGER := 6; PROCESSING_INSTRUCTION_NODE CONSTANT PLS_INTEGER := 7; COMMENT_NODE CONSTANT PLS_INTEGER := 8; DOCUMENT_NODE CONSTANT PLS_INTEGER := 9; DOCUMENT_TYPE_NODE CONSTANT PLS_INTEGER := 10; DOCUMENT_FRAGMENT_NODE CONSTANT PLS_INTEGER := 11; NOTATION_NODE CONSTANT PLS_INTEGER := 12;
본 절에서는 DBMS_XMLDOM 패키지에서 제공하는 별도 정의된 타입들을 알파벳 순으로 설명한다.
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 Attribute를 의미한다.
프로토타입
TYPE DOMAttr IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 CDataSection을 의미한다.
DOMCDataSection 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMCDataSection IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 CharacterData를 의미한다.
DOMCharacterData 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMCharacterData IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 Comment를 의미한다.
프로토타입
TYPE DOMComment IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 Document를 의미한다.
DOMDocument 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMDocument IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 DocumentFragment를 의미한다.
DOMDocumentFragment 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMDocumentFragment IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 DocumentType을 의미한다.
DOMDocumentType 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMDocumentType IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 Element를 의미한다.
프로토타입
TYPE DOMElement IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 Entity를 의미한다.
프로토타입
TYPE DOMEntity IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 EntityReference를 의미한다.
DOMEntityReference 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMEntityReference IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 Implementation을 의미한다.
DOMImplementation 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMImplementation IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 NamedNodeMap을 의미한다.
DOMNamedNodeMap 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMNamedNodeMap IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 노드를 의미한다.
프로토타입
TYPE DOMNode IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 NodeList를 의미한다.
DOMNodeList 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMNodeList IS RECORD(id RAW(16));
RAW 타입으로 이루어진 ID를 가진 RECORD 타입이다. DOM에서 Notation을 의미한다.
DOMNotation 타입의 세부 내용은 다음과 같다.
프로토타입
TYPE DOMNotation IS RECORD(id RAW(16));
본 절에서는 DBMS_XMLDOM 패키지에서 제공하는 프러시저와 함수를 알파벳 순으로 설명한다.
선택된 노드를 Document에 추가한다. 본래 있던 Document에서는 해당 노드가 제거된다.
프로토타입
DBMS_XMLDOM.ADOPTNODE ( doc IN DOMDocument, importedNode IN DOMNode ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
doc | 노드가 추가될 Document이다. |
importedNode | Document에 추가될 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; new_doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; n_ele dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; new_doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); n_ele := dbms_xmldom.makeNode(ele); n := dbms_xmldom.appendChild(root, n_ele); n := dbms_xmldom.adoptNode(new_doc, n_ele); end; /
선택된 노드에 자식 노드를 추가하는 함수로 추가된 자식 노드를 출력한다.
APPENDCHILD 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.APPENDCHILD ( n IN DOMNode, newchild IN DOMNode ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
n | 자식 노드가 추가될 노드이다. |
newchild | 노드에 추가될 자식 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); n := dbms_xmldom.makeNode(ele); n := dbms_xmldom.appendChild(root, n); end; /
해당 문서 안에 CDataSection을 생성하는 함수이다.
CREATECDATASECTION 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.CREATECDATASECTION ( doc IN DOMDocument, data IN VARCHAR2 ) RETURN DOMCDataSection;
파라미터
파라미터 | 설명 |
---|---|
doc | CDataSection이 생성될 문서다. |
data | CDataSection에 들어갈 내용이다. |
예제
declare doc dbms_xmldom.DOMDocument; cd dbms_xmldom.DOMCDataSection; begin doc := dbms_xmldom.newDomDocument; cd := dbms_xmldom.createCDataSection(doc, 'contents of cdatasection'); end; /
해당 문서 안에 COMMENT를 생성하는 함수이다.
CREATECOMMENT 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.CREATECOMMENT ( doc IN DOMDocument, data IN VARCHAR2 ) RETURN DOMComment;
파라미터
파라미터 | 설명 |
---|---|
doc | COMMENT가 생성될 문서다. |
data | COMMENT에 들어갈 내용이다. |
예제
declare doc dbms_xmldom.DOMDocument; cm dbms_xmldom.DOMComment; begin doc := dbms_xmldom.newDomDocument; cm := dbms_xmldom.createComment(doc, 'comment!!'); end; /
해당 문서 안에 Element를 생성하는 함수이다.
CREATEELEMENT 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.CREATEELEMENT ( doc IN DOMDocument, tagname IN VARCHAR2 ) RETURN DOMElement;
파라미터
파라미터 | 설명 |
---|---|
doc | Element가 생성될 문서다. |
tagname | Element의 태그 이름이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); end; /
해당 문서 안에 Text를 생성하는 함수이다.
CREATETEXTNODE 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.CREATETEXTNODE ( doc IN DOMDocument, data IN VARCHAR2 ) RETURN DOMText;
파라미터
파라미터 | 설명 |
---|---|
doc | Text가 생성될 문서다. |
data | Text에 들어갈 내용이다. |
예제
declare doc dbms_xmldom.DOMDocument; txt dbms_xmldom.DOMText; begin doc := dbms_xmldom.newDomDocument; txt := dbms_xmldom.createTextNode(doc, 'text'); end; /
DOMDocumentFragment Type을 초기화해 주는 프러시저다.
FREEDOCFRAG 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.FREEDOCFRAG ( doc IN DOMDocumentFragment );
파라미터
파라미터 | 설명 |
---|---|
df | 초기화해 줄 DocumentFragment이다. |
Document에 관련된 리소스들을 해제하는 프러시저다.
FREEDOCUMENT 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.FREEDOCUMENT ( doc IN DOMDocument );
파라미터
파라미터 | 설명 |
---|---|
doc | Resource를 해제할 문서다. |
예제
declare doc dbms_xmldom.DOMDocument; begin doc := dbms_xmldom.newDomDocument; dbms_xmldom.freedocument(doc); end; /
DOMNode에 관련된 리소스들을 해제하는 프러시저다. DOMNode가 문서인 경우에 DOMNode 타입을 초기화하고 해당 문서와 관련된 리소스를 해제한다. 문서가 아닌 경우에는 해당 DOMNode 타입만 초기화해 준다.
프로토타입
DBMS_XMLDOM.FREENODE ( n IN DOMNode );
파라미터
파라미터 | 설명 |
---|---|
n | 리소스를 해제할 노드다. |
예제
declare doc dbms_xmldom.DOMDocument; begin doc := dbms_xmldom.newDomDocument; dbms_xmldom.freenode(dbms_xmldom.makeNode(doc)); end; /
특정 Element로부터 Attribute의 값을 가져오는 함수이다.
GETATTRIBUTE 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETATTRIBUTE ( elem IN DOMElement, name IN VARCHAR2 ) RETURN VARCHAR2;
DBMS_XMLDOM.GETATTRIBUTE ( elem IN DOMElement, name IN VARCHAR2, ns IN VARCHAR2 ) RETURN VARCHAR2;
파라미터
파라미터 | 설명 |
---|---|
elem | 해당 Attribute를 찾을 Element이다. |
name | Attribute의 이름이다. |
ns | Attribute의 네임스페이스이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; x XMLType; attr_val VARCHAR2; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); attr_val := dbms_xmldom.getAttribute(ele, 'attr1'); dbms_output.put_line(attr_val); end; /
Element로부터 특정 DOMAttr을 가져오는 함수이다.
GETATTRIBUTENODE 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETATTRIBUTENODE ( elem IN DOMElement, name IN VARCHAR2 ) RETURN DOMAttr;
DBMS_XMLDOM.GETATTRIBUTENODE ( elem IN DOMElement, name IN VARCHAR2, ns IN VARCHAR2 ) RETURN DOMAttr;
파라미터
파라미터 | 설명 |
---|---|
elem | 해당 Attribute를 찾을 Element이다. |
name | Attribute의 이름이다. |
ns | Attribute의 네임스페이스이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; attr dbms_xmldom.DOMAttr; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); attr := dbms_xmldom.getAttributeNode(ele, 'attr1'); end; /
Element에 있는 모든 Attribute들을 출력하는 함수이다.
GETATTRIBUTES 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETATTRIBUTES ( n IN DOMNode ) RETURN DOMNamedNodeMap;
파라미터
파라미터 | 설명 |
---|---|
n | DOMNode 형태의 Element가 와야한다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; attr dbms_xmldom.DOMAttr; nm dbms_xmldom.DOMNamedNodeMap; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); dbms_xmldom.setAttribute(ele, 'attr2'); nm := dbms_xmldom.getAttributes(dbms_xmldom.makeNode(ele)); end; /
해당 노드의 자식 노드들을 출력한다.
GETCHILDNODES 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETCHILDNODES ( n IN DOMNode ) RETURN DOMNodeList;
파라미터
파라미터 | 설명 |
---|---|
n | 자식 노드들을 출력할 부모 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; p dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; nl dbms_xmldom.DOMNodeList; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); p := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child2'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child3'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); nl := dbms_xmldom.getChildNodes(p); end; /
특정 태그명을 갖는 Element들을 자식 노드들에서 찾아서 출력해주는 함수이다.
GETCHILDRENBYTAGNAME 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETCHILDRENBYTAGNAME ( elem IN DOMElement, name IN VARCHAR2 ) RETURN DOMNodeList;
DBMS_XMLDOM.GETCHILDRENBYTAGNAME ( elem IN DOMElement, name IN VARCHAR2, ns IN VARCHAR2 ) RETURN DOMNodeList;
파라미터
파라미터 | 설명 |
---|---|
elem | 자식 노드들을 출력할 Parent Element 노드이다. |
name | 찾을 노도들의 태그명이다. |
ns | 찾을 노드들의 네임스페이스이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; p dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; nl dbms_xmldom.DOMNodeList; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); p := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child3'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); nl := dbms_xmldom.getChildrenByTagName(p, 'child1'); end; /
문서의 root element를 가져온다.
GETDOCUMENTELEMENT 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETDOCUMENTELEMENT ( doc IN DOMDocument ) RETURN DOMElement;
파라미터
파라미터 | 설명 |
---|---|
doc | root element를 가져올 문서이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); n := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); n := dbms_xmldom.getDocumentElement(doc); end; /
특정 태그명을 갖는 Element들을 찾아서 출력해주는 함수이다.
GETELEMENTSBYTAGNAME 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETELEMENTSBYTAGNAME ( doc IN DOMDocument, name IN VARCHAR2 ) RETURN DOMNodeList;
DBMS_XMLDOM.GETELEMENTSBYTAGNAME ( elem IN DOMElement, name IN VARCHAR2 ) RETURN DOMNodeList;
DBMS_XMLDOM.GETELEMENTSBYTAGNAME ( elem IN DOMElement, name IN VARCHAR2, ns IN VARCHAR2 ) RETURN DOMNodeList;
파라미터
파라미터 | 설명 |
---|---|
doc | Element들을 찾을 Document노드이다. |
elem | Element들을 찾을 Parent Element노드이다. |
name | 찾을 노도들의 태그명이다. |
ns | 찾을 노드들의 네임스페이스이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; p dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; nl dbms_xmldom.DOMNodeList; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); p := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child3'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); nl := dbms_xmldom.getElementsByTagname(doc, 'child1'); end; /
첫 번째에 있는 자식 노드를 출력하는 함수이다.
GETFIRSTCHILD 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETFIRSTCHILD ( n IN DOMNode ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
n | 자식을 찾을 부모 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; p dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); p := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child2'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child3'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); n := dbms_xmldom.getFirstChild(p); end; /
마지막에 있는 자식 노드를 출력하는 함수이다.
GETLASTCHILD 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETLASTCHILD ( n IN DOMNode ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
n | 자식을 찾을 부모 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; p dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); p := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child2'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child3'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); n := dbms_xmldom.getLastChild(p); end; /
길이를 출력하는 함수이다. CharacterData의 경우에는 문자의 길이를 출력하고, DOMNamedNodeMap 또는 DOMNodeList인 경우에는 개수를 출력한다.
프로토타입
DBMS_XMLDOM.GETLENGTH ( cd IN DOMCharacterData ) RETURN NUMBER;
DBMS_XMLDOM.GETLENGTH ( nnm IN DOMNamedNodeMap ) RETURN NUMBER;
DBMS_XMLDOM.GETLENGTH ( nl IN DOMNodeList ) RETURN NUMBER;
파라미터
파라미터 | 설명 |
---|---|
cd | CharacterData를 가지고 있는 노드이다. |
nnm | 여러 노드 정보를 맵 형태로 가지고 있는 타입이다. |
nl | 여러 노드 정보를 List 형태로 가지고 있는 타입이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; p dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; nl dbms_xmldom.DOMNodeList; len Number; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); p := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child2'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child3'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); nl := dbms_xmldom.getElementsByTagname(doc, 'child1'); len := dbms_xmldom.getLength(nl); end; /
해당 노드의 이름을 출력해주는 함수이다.
프로토타입
DBMS_XMLDOM.GETNAME ( a IN DOMAttr ) RETURN VARCHAR2;
DBMS_XMLDOM.GETNAME ( dt IN DOMDocumentType ) RETURN VARCHAR2;
파라미터
파라미터 | 설명 |
---|---|
a | 이름을 가져올 Attribute 노드이다. |
dt | 이름을 가져올 DOMDocumentType 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; attr dbms_xmldom.DOMAttr; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); attr := dbms_xmldom.getAttributeNode(ele, 'attr1'); dbms_output.put_line(dbms_xmldom.getName(attr)); end; /
DOMNamedNodeMap에서 특정 이름을 갖는 노드를 가져오는 함수이다.
GETNAMEDITEM 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETNAMEDITEM ( nnm IN DOMNamedNodeMap, name IN VARCHAR2 ) RETURN DOMNode;
DBMS_XMLDOM.GETNAMEDITEM ( nnm IN DOMNamedNodeMap, name IN VARCHAR2, ns IN VARCHAR2 ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
nnm | 노드들을 맵 형태로 가지고 있는 DOMNamedNodeMap 타입이다. |
name | DOMNamedNodeMap에서 가져올 노드의 이름이다. |
ns | DOMNamedNodeMap에서 가져올 노드의 네임스페이스이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; attr dbms_xmldom.DOMAttr; nm dbms_xmldom.DOMNamedNodeMap; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); dbms_xmldom.setAttribute(ele, 'attr2'); nm := dbms_xmldom.getAttributes(dbms_xmldom.makeNode(ele)); n := dbms_xmldom.getNamedItem(nm, 'attr1'); end; /
노드의 이름을 출력하는 함수이다.
GETNODENAME 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETNODENAME ( n IN DOMNode ) RETURN VARCHAR2;
파라미터
파라미터 | 설명 |
---|---|
n | 이름을 출력할 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; attr dbms_xmldom.DOMAttr; nm dbms_xmldom.DOMNamedNodeMap; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); dbms_xmldom.setAttribute(ele, 'attr2'); nm := dbms_xmldom.getAttributes(dbms_xmldom.makeNode(ele)); n := dbms_xmldom.getNamedItem(nm, 'attr1'); dbms_output.put_line(dbms_xmldom.getNodeName(n)); end; /
노드의 타입 정보를 DBMS_XMLDOM의 상수형태로 출력해주는 함수이다.
GETNODETYPE 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETNODETYPE ( n IN DOMNode ) RETURN NUMBER;
파라미터
파라미터 | 설명 |
---|---|
n | 타입 정보를 출력할 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_output.put_line(dbms_xmldom.getNodeType(dbms_xmldom.makeNode(doc))); dbms_output.put_line(dbms_xmldom.getNodeType(dbms_xmldom.makeNode(ele))); end; /
노드의 값을 출력해주는 함수이다.
GETNODEVALUE 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETNODEVALUE ( n IN DOMNode ) RETURN VARCHAR2;
파라미터
파라미터 | 설명 |
---|---|
n | 값을 출력할 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_output.put_line(dbms_xmldom.getNodeValue(dbms_xmldom.makeNode(ele))); end; /
해당 노드가 속해 있는 Document를 출력해주는 함수이다.
GETOWNERDOCUMENT 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETOWNERDOCUMENT ( n IN DOMNode ) RETURN DOMDocument;
파라미터
파라미터 | 설명 |
---|---|
n | 문서를 찾을 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); doc := dbms_xmldom.getOwnerDocument(dbms_xmldom.makeNode(ele)); end; /
해당 노드의 부모 노드를 출력해주는 함수이다.
GETPARENTNODE 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.GETPARENTNODE ( n IN DOMNode ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
n | 부모를 찾을 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; p dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; n1 dbms_xmldom.DOMNode; n2 dbms_xmldom.DOMNode; n3 dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); p := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n1 := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child2'); n2 := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child3'); n3 := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); n := dbms_xmldom.getParentNode(n1); end; /
Attribute노드의 값을 출력해주는 함수이다.
프로토타입
DBMS_XMLDOM.GETVALUE ( a IN DOMAttr ) RETURN VARCHAR2;
파라미터
파라미터 | 설명 |
---|---|
a | 값을 출력할 Attribute 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; attr dbms_xmldom.DOMAttr; attr_val VARCHAR2; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); attr := dbms_xmldom.getAttributeNode(ele, 'attr1'); attr_val := dbms_xmldom.getVal(attr); dbms_output.put_line(attr_val); end; /
문서를 XMLType 형태로 출력한다.
프로토타입
DBMS_XMLDOM.GETXMLTYPE ( doc IN DOMDocument ) RETURN XMLType;
파라미터
파라미터 | 설명 |
---|---|
doc | XMLType 형태로 출력된 DOM 형태의 문서다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; x XMLType; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); n := dbms_xmldom.makeNode(ele); n := dbms_xmldom.appendChild(root, n); x := dbms_xmldom.getXMLType(doc); end; /
해당 Element 노드가 특정 ATTRIBUTE를 가지고 있는지 확인하는 함수이다.
HASATTRIBUTE 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.HASATTRIBUTE ( elem IN DOMElement, name IN VARCHAR2 ) RETURN BOOLEAN;
DBMS_XMLDOM.HASATTRIBUTE ( elem IN DOMElement, name IN VARCHAR2, ns IN VARCHAR2 ) RETURN BOOLEAN;
파라미터
파라미터 | 설명 |
---|---|
elem | 해당 Attribute를 찾을 Element이다. |
name | Attribute의 이름이다. |
ns | Attribute의 네임스페이스이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; x XMLType; has_attr BOOLEAN; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); has_attr := dbms_xmldom.HasAttribute(ele, 'attr1'); end; /
문서 안에 해당 노드를 복사하여 추가하는 함수이다.
프로토타입
DBMS_XMLDOM.IMPORTNODE ( doc IN DOMDocument, importedNode IN DOMNode, deep IN BOOLEAN ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
doc | 노드를 추가할 문서이다. |
importedNode | 추가될 노드이다. |
deep |
|
예제
declare doc1 dbms_xmldom.DOMDocument; doc2 dbms_xmldom.DOMDocument; ele1 dbms_xmldom.DOMElement; ele2 dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n0 dbms_xmldom.DOMNode; n1 dbms_xmldom.DOMNode; n2 dbms_xmldom.DOMNode; begin doc1 := dbms_xmldom.newDomDocument; doc2 := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc1); ele1 := dbms_xmldom.createElement(doc1, 'root'); ele2 := dbms_xmldom.createElement(doc1, 'ele'); n1 := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele1)); n2 := dbms_xmldom.appendChild(n1, dbms_xmldom.makeNode(ele2)); n0 := dbms_xmldom.importNode(doc2, n1, FALSE); end; /
선택된 노드 앞에 해당노드를 추가하는 함수이다. 선택된 노드가 Null일 경우, 해당 노드를 가장 끝에 추가한다.
INSERTBEFORE 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.INSERTBEFORE ( n IN DOMNode, newchild IN DOMNode, refchild IN DOMNode ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
n | 추가될 노드의 부모 노드이다. |
newchild | 노드에 추가될 자식 노드이다. |
refchild | refchild 앞에 newchild가 추가된다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; ele1 dbms_xmldom.DOMElement; ele2 dbms_xmldom.DOMElement; ele3 dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; nele dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; n1 dbms_xmldom.DOMNode; n2 dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); ele1 := dbms_xmldom.createElement(doc, 'ele1'); ele2 := dbms_xmldom.createElement(doc, 'ele2'); ele3 := dbms_xmldom.createElement(doc, 'ele3'); nele := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); n1 := dbms_xmldom.appendChild(nele, dbms_xmldom.makeNode(ele1)); n2 := dbms_xmldom.appendChild(nele, dbms_xmldom.makeNode(ele2)); n := dbms_xmldom.insertBefore(nele, dbms_xmldom.makeNode(ele3), n1); end; /
NULL여부를 확인해주는 함수이다.
프로토타입
DBMS_XMLDOM.ISNULL ( a IN DOMAttr ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( cds IN DOMCDataSection ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( cd IN DOMCharacterData ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( com IN DOMComment ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( doc IN DOMDocument ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( df IN DOMDocumentFragment ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( dt IN DOMDocumentType ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( elem IN DOMElement ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( ent IN DOMEntity ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( eref IN DOMEntityReference ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( di IN DOMImplementation ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( nnm IN DOMNamedNodeMap ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( n IN DOMNode ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( nl IN DOMNodeList ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( n IN DOMNotation ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( pi IN DOMProcessingInstruction ) RETURN BOOLEAN;
DBMS_XMLDOM.ISNULL ( t IN DOMText ) RETURN BOOLEAN;
예제
declare doc dbms_xmldom.DOMDocument; begin dbms_xmldom.isNULL(doc); doc := dbms_xmldom.newDomDocument; dbms_xmldom.isNULL(doc); end; /
NamedNodeMap과 NodeList에서 해당 Item을 출력해주는 함수이다.
프로토타입
DBMS_XMLDOM.ITEM ( nl IN DOMNodeList, index IN Number ) RETURN DOMNode;
DBMS_XMLDOM.ITEM ( nnm IN DOMNamedNodeMap, index IN Number ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
nl | Item을 가져올 NodeList이다. |
nnm | Item을 가져올 NamedNodeMap이다. |
index | 가져올 Item의 Index이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; p dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; nl dbms_xmldom.DOMNodeList; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); p := dbms_xmldom.appendChild(root, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child1'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child2'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); ele := dbms_xmldom.createElement(doc, 'child3'); n := dbms_xmldom.appendChild(p, dbms_xmldom.makeNode(ele)); nl := dbms_xmldom.getChildNodes(p); n := dbms_xmldom.item(nl, 1); end; /
노드를 Attribute로 캐스팅한다.
프로토타입
DBMS_XMLDOM.MAKEATTR ( n IN DOMNode ) RETURN DOMAttr;
파라미터
파라미터 | 설명 |
---|---|
n | DOMAttr로 캐스팅할 DOMNode다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; attr dbms_xmldom.DOMAttr; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); attr := dbms_xmldom.getAttributeNode(ele, 'attr1'); n := dbms_xmldom.makeNode(attr); attr := dbms_xmldom.makeAttr(n); end; /
노드를 Document로 캐스팅한다.
MAKEDOCUMENT 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.MAKEDOCUMENT ( n IN DOMNode ) RETURN DOMDocument;
파라미터
파라미터 | 설명 |
---|---|
n | DOMDocument로 캐스팅할 DOMNode다. |
예제
declare doc dbms_xmldom.DOMDocument; root dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); doc := dbms_xmldom.makeAttr(root); end; /
노드를 Element로 캐스팅한다.
MAKEELEMENT 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.MAKEELEMENT ( n IN DOMNode ) RETURN DOMElement;
파라미터
파라미터 | 설명 |
---|---|
n | DOMElement로 캐스팅할 DOMNode다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; n dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); n := dbms_xmldom.makeNode(ele); ele := dbms_xmldom.makeElement(n); end; /
Document를 Node로 캐스팅한다.
프로토타입
DBMS_XMLDOM.MAKENODE ( doc IN DOMDocument ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
doc | DOMNode로 캐스팅할 DOMDocument다. |
예제
declare doc dbms_xmldom.DOMDocument; root dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); end; /
DOM 형태의 문서를 생성한다.
NEWDOMDOCUMENT 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.NEWDOMDOCUMENT RETURN DOMDocument;
예제
declare doc dbms_xmldom.DOMDocument; begin doc := dbms_xmldom.newDomDocument; end; /
해당 Element노드의 특정 ATTRIBUTE를 제거하는 프러시저다.
REMOVEATTRIBUTE 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.REMOVEATTRIBUTE ( elem IN DOMElement, name IN VARCHAR2 );
DBMS_XMLDOM.REMOVEATTRIBUTE ( elem IN DOMElement, name IN VARCHAR2, ns IN VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
elem | 해당 Attribute를 찾을 Element이다. |
name | Attribute의 이름이다. |
ns | Attribute의 네임스페이스이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; x XMLType; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); has_attr := dbms_xmldom.removeAttribute(ele, 'attr1'); end; /
해당 노드의 자식 노드를 제거하는 함수이다.
REMOVECHILD 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.REMOVECHILD ( n IN DOMNode, oldchild IN DOMNode ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
n | 자식 노드를 가지고 있는 노드이다. |
oldchild | 지워질 자식 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; nele dbms_xmldom.DOMNode; deleted dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); nele := dbms_xmldom.makeNode(ele); nele := dbms_xmldom.appendChild(root, nele) deleted := dbms_xmldom.removeChild(root, nele); end; /
해당 노드의 자식 노드를 교체하는 함수이다.
REPLACECHILD 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.REPLACECHILD ( n IN DOMNode, newchild IN DOMNode, oldchild IN DOMNode ) RETURN DOMNode;
파라미터
파라미터 | 설명 |
---|---|
n | 자식 노드를 가지고 있는 노드이다. |
newchild | 새로 넣을 자식 노드이다. |
oldchild | 바꿔질 자식 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele1 dbms_xmldom.DOMElement; ele2 dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; nele1 dbms_xmldom.DOMNode; nele2 dbms_xmldom.DOMNode; replaced dbms_xmldom.DOMNode; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele1 := dbms_xmldom.createElement(doc, 'root'); ele2 := dbms_xmldom.createElement(doc, 'newroot'); nele1 := dbms_xmldom.makeNode(ele1); nele2 := dbms_xmldom.makeNode(ele2); nele1 := dbms_xmldom.appendChild(root, nele1) replaced := dbms_xmldom.replaceChild(root, nele2, nele1); end; /
특정 Element에 Attribute를 추가하는 프러시저다.
SETATTRIBUTE 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.SETATTRIBUTE ( elem IN DOMElement, name IN VARCHAR2, newvalue IN VARCHAR2 );
DBMS_XMLDOM.SETATTRIBUTE ( elem IN DOMElement, name IN VARCHAR2, newvalue IN VARCHAR2, ns IN VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
elem | 해당 Attribute를 넣을 Element이다. |
name | Attribute의 이름이다. |
newvalue | Attribute의 값이다. |
ns | Attribute의 네임스페이스이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; x XMLType; attr_val VARCHAR2; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); attr_val := dbms_xmldom.getAttribute(ele, 'attr1'); dbms_output.put_line(attr_val); end; /
Attribute 노드의 값을 변경하는 프러시저다.
프로토타입
DBMS_XMLDOM.SETVALUE ( a IN DOMAttr, value IN VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
a | 값을 변경할 Attribute 노드이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; attr dbms_xmldom.DOMAttr; begin doc := dbms_xmldom.newDomDocument; ele := dbms_xmldom.createElement(doc, 'root'); dbms_xmldom.setAttribute(ele, 'attr1'); attr := dbms_xmldom.getAttributeNode(ele, 'attr1'); dbms_xmldom.setVal(attr, 'new_attr'); end; /
DOM 문서를 CLOB 형태로 출력한다.
WRITETOCLOB 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_XMLDOM.WRITETOCLOB ( doc IN DOMDocument, cl OUT CLOB );
파라미터
파라미터 | 설명 |
---|---|
doc | DOM 형태의 문서다. |
cl | 결과가 출력될 CLOB이다. |
예제
declare doc dbms_xmldom.DOMDocument; ele dbms_xmldom.DOMElement; root dbms_xmldom.DOMNode; n dbms_xmldom.DOMNode; cl CLOB; begin doc := dbms_xmldom.newDomDocument; root := dbms_xmldom.makeNode(doc); ele := dbms_xmldom.createElement(doc, 'root'); n := dbms_xmldom.makeNode(ele); n := dbms_xmldom.appendChild(root, n); dbms_xmldom.writeToClob(doc, cl); end; /