【问题标题】:How to find Node Value From Clob XML in Oracle如何在 Oracle 中从 Clob XML 中查找节点值
【发布时间】:2018-10-21 19:25:00
【问题描述】:

我有一个包含以下 xml 的 clob 数据类型的表。

  <?xml version='1.0' encoding='UTF-8'?>
<CustomNavigatorNode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:recordtype="urn:dataworld-com:recordtype" xmlns="urn:dataworld-com:schemas:custom_navigator_node" recordtype:state="modified">
 <NAME recordtype:datatype="Text">Data report Value</NAME>
 <KEY recordtype:datatype="Text">3abe649e-d183-4ef1-b394-644ecbf98da8</KEY>
 <PARENT_KEY recordtype:datatype="Text">629a0679-9c7f-4a4a-a293-114796bf9156</PARENT_KEY>
 <URL recordtype:datatype="Text" recordtype:dirty="true">https://ctx.alfa.ats:8443/BOE/</URL>
 <TAG recordtype:datatype="Text" xsi:nil="1" />
 <TYPE recordtype:datatype="Text">Url</TYPE>
 <ORDINAL recordtype:datatype="Integer">10000</ORDINAL>
 <NAME_OVERRIDE recordtype:datatype="Boolean">0</NAME_OVERRIDE>
</CustomNavigatorNode> 

表结构:

CREATE TABLE test_clob (data_value  CLOB);
SELECT "Select Value from Name tag"
FROM test_clob

我需要从节点“NAME”中选择标签值

所需输出要求:数据报告值

【问题讨论】:

标签: xml oracle oracle11g xml-parsing clob


【解决方案1】:

我不确定,但是... 你可以试试这个。

SELECT dbms_xmlgen.convert(xmltype(data_value)
       .extract('//CustomNavigatorNode/NAME/text()')
       .getstringval(),1) as NAME
FROM test_clob;

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    select xmlquery('/CustomNavigatorNode/NAME/text()' 
       passing xmltype(data_value) 
       returning content) AS "Name"
    from test_clob;
    

    考虑到您可能应该先声明命名空间(检查您的具体情况),例如:

    select xmlquery('declare default element namespace "http://www.w3.org/2001/XMLSchema-instance"; /CustomNavigatorNode/NAME/text()' 
       passing xmltype(data_value) 
       returning content) AS "Name"
    from test_clob;
    

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 2016-10-16
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      相关资源
      最近更新 更多