2014-11-06 2 views
-1

나는 오라클 11g에서 XMLTYPE 함께 일하고, 나는이 같은 태그가 : 나는 "네임 스페이스"의 정보를 얻는 방법을 알고 싶습니다xmltype 태그에서 네임 스페이스 값을 가져 오는 방법은 무엇입니까?

**<ProprietaryId Namespace="CMA_ID">ad017f3a9736ce9d8cbbfc89955aa033 </ProprietaryId>**

를? 여기

내가 사용하고있는 코드입니다 :

SELECT extractvalue(value (sr),'*/ReleaseId/ProprietaryId')as ProprietaryId 
    FROM XML_TABLE X, 
     table(xmlsequence (extract(dados, '*/ContainedReleaseList/Release')))sr 

하지만 난 단지 태그의 정보와 이름이 아닌 공간을 얻을 수 있습니다.

답변

0

값이 필요한 속성을 지정하려면 @을 사용해야합니다.

다음은 샘플 쿼리입니다.

SQL> with x(y) as (
select '<?xml version="1.0" encoding="UTF-8"?> 
<service_orders count="1"> 
     <ProprietaryId Namespace="CMA_ID">ad017f3a9736ce9d8cbbfc89955aa033 </ProprietaryId> 
</service_orders>' from dual 
) 
select 
    extractvalue(xmltype(y),'service_orders/ProprietaryId/@Namespace') as ProprietaryNamespace 
from 
    x; 

PROPRIETARYNAMESPACE 
----------------------- 
CMA_ID 

그러나 EXTRACTVALUE는 더 이상 사용되지 않습니다. XMLTABLE을 사용할 수 있습니다.

SQL> with x(y) as (
select '<?xml version="1.0" encoding="UTF-8"?> 
<service_orders count="1"> 
     <ProprietaryId Namespace="CMA_ID">ad017f3a9736ce9d8cbbfc89955aa033 </ProprietaryId> 
</service_orders>' from dual 
) 
select 
    prop.ProprietaryNamespace 
from 
    x, 
    xmltable('service_orders/ProprietaryId' 
     passing xmltype(x.y) 
     columns ProprietaryNamespace varchar2(20) path '@Namespace' 
     ) prop; 

PROPRIETARYNAMESPACE 
-------------------- 
CMA_ID 
관련 문제