我正在尝试从位于 Oracle 表的 XMLTYPE 列中的 xml 元素中提取值。我试图提取的 xml 元素有一个定义了命名空间的父元素。 xml 看起来像这样:
<a>
<b xmlns="urn:www.someSite.com/myModel">
<c>my value</c>
</b>
</a>
如果我想提取“a”元素的内容,它的上下文被正确返回:
SELECT Extract(myColumn, '/a') FROM myTable;
但是为了返回“c”元素的内容,我没有成功找到任何可用的版本。以下说明不起作用:
SELECT Extract(myColumn, '/a/b/c') FROM myTable;
SELECT Extract(myColumn, '/a/b/c', 'xmlns="urn:www.someSite.com/myModel"') FROM myTable;
SELECT Extract(myColumn, '/a/b/c', 'urn:www.someSite.com/myModel') FROM myTable;
任何人都可以用在这种情况下有效的提取语句帮助我吗?
最佳答案
select a.*
from XMLTABLE(
XMLNAMESPACES('urn:www.someSite.com/myModel' AS "ns"),
'/*'
PASSING my.myColumn
COLUMNS
val VARCHAR2(2000) PATH '/a/ns:b/ns:c'
) a, myTable my;
关于xml - 在 Oracle 中选择 xml 元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9975518/