Oracle의 전문가는 아니지만 요구 사항에 따라 Oracle Parser for Xars를 사용하고 있습니다. 아래에 나열된 XML 내용 즉오라클 파서를 사용하여 XML에서 첫 번째 발생 값
<?xml version="1.0" encoding="iso-8859-1" ?>
<SearchOutput>
<rowArray>
<Row>
<cellArray>
<Cell>
<columnId>1</columnId>
<valueArray>
<Value>
<value>IR000024575453</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>5</columnId>
<valueArray>
<Value>
<value>AZ12604823-001</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>2</columnId>
<valueArray>
<Value>
<value>IT06686</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>9</columnId>
<valueArray>
<Value>
<value>Hu Mics Metab K</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>8</columnId>
<valueArray>
<Value>
<value>2006-06-21</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>7</columnId>
<valueArray>
<Value>
<value>2006-07-27</value>
</Value>
</valueArray>
</Cell>
</cellArray>
</Row>
</rowArray>
</SearchOutput>
I는 l_xmlclob가 CLOB 데이터 유형을 가지며, 상기 XML을 할당하는 방법을 사용 하였다.
FOR r IN ( SELECT rownum rn, cells
FROM xmltable('/SearchOutput/rowArray/Row' passing XMLTYPE(l_xmlclob)
columns CELLS XMLTYPE PATH './cellArray')
)
LOOP
DBMS_OUTPUT.PUT_LINE('Row: '||r.rn);
FOR c IN (SELECT colid, colval
FROM xmltable('/cellArray/Cell' passing r.cells
columns COLID NUMBER PATH './columnId',
COLVAL VARCHAR(20) PATH './valueArray/Value/value')
)
LOOP
DBMS_OUTPUT.PUT_LINE('colid, col value: '||c.colid||', '||c.colval);
END LOOP;
END LOOP;
및 작업 미세하고 그 출력
Row: 1
colid, col value: 1, IR000024575453
colid, col value: 5, AZ12604823-001
colid, col value: 2, IT06686
colid, col value: 9, Hu Mics Metab K
colid, col value: 8, 2006-06-21
colid, col value: 7, 2006-07-27
비슷하지만 두 값이 XML에서 잇달아이 있으면 문제가 발생하고 난 단지 예를위한 첫 번째 발생을 선택하고자 아래의 XML 내가 원하는
<?xml version="1.0" encoding="iso-8859-1" ?>
<SearchOutput>
<rowArray>
<Row>
<cellArray>
<Cell>
<columnId>1</columnId>
<valueArray>
<Value>
<value>Uganda</value>
</Value>
<Value>
<value>Italy</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>5</columnId>
<valueArray>
<Value>
<value>AZ12604823-001</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>2</columnId>
<valueArray>
<Value>
<value>IT06686</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>9</columnId>
<valueArray>
<Value>
<value>Hu Mics Metab K</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>8</columnId>
<valueArray>
<Value>
<value>2006-06-21</value>
</Value>
</valueArray>
</Cell>
<Cell>
<columnId>7</columnId>
<valueArray>
<Value>
<value>2006-07-27</value>
</Value>
<Value>
<value>2012-02-27</value>
</Value>
</valueArray>
</Cell>
</cellArray>
</Row>
</rowArray>
</SearchOutput>
은 "우간다는 AZ12604823-001는 IT06686, 후 마이크 Metab K, 2006-06-21,2006-07-27는"뿐만 아니라 "이탈리아 2012 그 valueArray 내에서 선택한다 -02-27 ". 그러나 기존 코드를 수정하는 방법을 모르십시오.
원래의 질문에서 나는 "Array"가 나쁜 것을 의미한다는 것을 알고있었습니다 :)이 XML 소스를 가지고있는 것이 도움이되었을 것입니다. 왜냐하면 실제로 수정을 위해 필요한 모든 것이 어딘가에 있기 때문입니다! – Tom
@Tom Once Again 다시 한번 감사드립니다. – IConfused