XML 在 ORACLE 上进行解析(帮助 :/)

XML PARSING ON ORACLE (HELP :/)

我有 xml 个这样的数据;

<NctsYYSResponse xmlns="http://http://www.w3.org/2001/XMLSchema-instance">
     <Root>
        <Response xmlns="">
           <RefID>11084672</RefID>
           <Guid>b2231713</Guid>
           <Durum>Thank You!</Durum>
        </Response>
     </Root>
  </NctsYYSResponse>

我尝试了这个 sql 代码,但我无法得到结果;

      1- SELECT EXTRACTVALUE (XMLType(xml_respond) , '/NctsYYSResponse/Root/Response/Guid') guid from table1 


      2-SELECT x.GUID,x.STATUS FROM table1,XMLTABLE(
'/NctsYYSResponse/Root/Response'
PASSING XMLTYPE(xml_respond) 
COLUMNS
"GUID" VARCHAR2(20) PATH 'Guid',
"STATUS" VARCHAR2(100) PATH 'Durum') x ;


3-select x.GUID  from table1, xmltable(
     xmlnamespaces ('http://http://www.w3.org/2001/XMLSchema-instance' as "a" , 
     default ''), '/NctsYYSResponse/Root/a:Response'
     passing XMLType(xml_respond) 
      columns
       "GUID" VARCHAR2(20) path 'Guid'
   ) x  ;

Return 全部为空

如果我将 NctsYYSResponse 的类型 xmlns 更改为 xmlns:xsi ,我可以获得结果。但是我需要在 xmlns 时得到结果。请帮助我:/

您最后一次尝试非常接近;您刚刚将 a 命名空间应用于错误的元素:

select x.guid, x.status
from table1
cross apply xmltable (
  xmlnamespaces (
    'http://http://www.w3.org/2001/XMLSchema-instance' as "a", 
    default ''
  ),
  '/a:NctsYYSResponse/a:Root/Response'
  passing XMLType(xml_respond) 
  columns
    guid VARCHAR2(20) path 'Guid',
    status VARCHAR2(100) PATH 'Durum'
) x;
GUID                 STATUS
-------------------- ---------------
b2231713             Thank You!

db<>fiddle