xml - 在 Oracle 中选择 xml 元素值

标签 xml oracle namespaces extract

我正在尝试从位于 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/

相关文章:

c++ - 如何从嵌套命名空间中引用外部 C++ 命名空间?

java - parser.setFeature 与 parser.setValidating

php - oci_bind_by_name 和 to_date PHP/OCI/Oracle

sql - ORACLE-SQL : stored procedure using array as parameter for select

Oracle APEX 5 主页未正确加载

c++ - 是否有等同于 Python 的 "import bigname as b"的 C++?

xml - 使用 xslt 根据属性值过滤 XML

java - 使用 JAXB 从套接字解码 xml 后客户端被阻止

xml - XML声明节点是强制的吗?

php - 是否可以将 php 中的类别名列表作为数组获取?