Я пытаюсь проанализировать и извлечь некоторое значение из файла 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"
, это вдруг работает. У кого-нибудь есть опыт по этому поводу? Спасибо!