0
我有一个查询,从我的clob中提取一些XML节点。如何获取Oracle XPath表达式中父元素的名称?
select pid, name, xml from (
select d.pid, d.name
, EXTRACT(xmltype(d.data), '//ns1:myId', 'xmlns:ns1="http://acme.com/') xml
from DATA d
order by d.pid desc
)
;
但我想看看提取的xmlnode的父元素名称实际上是什么。我试图
, EXTRACT(xmltype(d.data), '//ns1:myId/../name()', ...) xml
和
, EXTRACT(xmltype(d.data), '//ns1:myId/name()', ...) xml
和
, EXTRACT(xmltype(d.data), '//ns1:myId/local-name()', ...) xml
但甲骨文拒绝所有的F将它们与 “无效令牌” 的错误消息。
我的Oracle版本是“11.2.0.3.0”。
当然,'extract'的结果不能向上遍历。但我想我可以修改XPath表达式,这样'extract'返回父节点供我检查。 – towi
@towi - 我的意思是在XPath中,而不是后解压缩,但这是不正确的;这是不受支持的功能。我已经更新了答案以显示如何完成。不过,我仍然会在弃用的'extract()'上使用更新的功能。 –
工作。感谢您提供'extract'的附加信息已被弃用。我不明白你的不被弃用的解决方案,但是,当我必须的时候,我会的。它里面有太多东西,我只在“传球”中看到过,而且他们总是让我的眼睛“交叉”。 – towi