Не удается извлечь XML с пространством имен по умолчанию из столбца CLOB базы данных Oracle - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь проанализировать и извлечь некоторое значение из файла xml, хранящегося в столбце CLOB в базе данных Oracle (мы используем 11g).

После некоторых тестов я обнаружил, что он не работает, когда элемент имеет некоторое пространство имен по умолчанию. Вот тестовый код.

Этот фрагмент кода не работает:

create table
 xml_key 
(   mycol number, 
    xml   clob
);

insert into 
   xml_key
values 
( 
   1,
'<?xml version="1.0" encoding="GB2312"?>
 <FpML version="4-2" 
    xmlns="http://www.fpml.org/2005/FpML-4-2">         
  <trade>    
        <equityOption>
        <productType>Digital</productType>          
        <optionType>Call</optionType>           
    </equityOption>
</trade>    
</FpML>');

SELECT XMLTYPE(t.xml).EXTRACT('//optionType/text()').getStringVal(),  
t.xml

FROM  xml_key t;


drop table xml_key   

Но если я изменю пространство имен defualt на именованное пространство имен, например xmlns:fm="http://www.fpml.org/2005/FpML-4-2" , это вдруг работает. У кого-нибудь есть опыт по этому поводу? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...