我正在尝试从Oracle数据库(我们正在使用11g)的CLOB
列中存储的xml文件中解析和提取一些值。
经过一些测试,我发现当元素具有一些默认名称空间时,它似乎不起作用。这是一些测试代码。
这段代码不起作用:
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
但是如果我将默认名称空间更改为命名名称空间,例如xmlns:fm="http://www.fpml.org/2005/FpML-4-2"
,它突然起作用。有人对此有经验吗?谢谢!