在Oracle中选择xml元素值

axl*_*l g 2 xml oracle namespaces extract

我试图从位于Oracle表的XMLTYPE列中的xml元素中提取值.我想要提取的xml元素具有为其定义命名空间的父元素.xml看起来像:

<a>
  <b xmlns="urn:www.someSite.com/myModel">
    <c>my value</c>
  </b>
</a>
Run Code Online (Sandbox Code Playgroud)

如果我想提取"a"元素的内容,则正确返回其上下文:

SELECT Extract(myColumn, '/a') FROM myTable;
Run Code Online (Sandbox Code Playgroud)

但是为了返回"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;
Run Code Online (Sandbox Code Playgroud)

任何人都能帮助我,使用在这种情况下可行的提取语句吗?

Jok*_*ilä 5

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;
Run Code Online (Sandbox Code Playgroud)