【问题标题】:Oracle 12c: Extract data (select) from XML (CLOB Type)Oracle 12c:从 XML(CLOB 类型)中提取数据(选择)
【发布时间】:2018-02-23 04:23:11
【问题描述】:

我需要从保存在 Oracle 12c 表的 CLOB 类型列中的 XML 代码中提取一些标记值。

之前我们使用 xmltype(COLUMN).extract('XPath/text()').getStringVal() 从标签中提取数据,但在我们的数据库升级到 12c 后它无法正常工作。

我们有 XML Like:

<otm:ShipmentStatus 
xmlns:gtm="http://xmlns.oracle.com/apps/gtm/transmission/v6.4" 
xmlns:otm="http://xmlns.oracle.com/apps/otm/transmission/v6.4">
<otm:ServiceProviderAlias>
<otm:ServiceProviderAliasQualifierGid>
<otm:Gid>
<otm:Xid>GLOG</otm:Xid>
</otm:Gid>
</otm:ServiceProviderAliasQualifierGid>
<otm:ServiceProviderAliasValue>TEST.123</otm:ServiceProviderAliasValue>
</otm:ServiceProviderAlias>
<otm:IntSavedQuery>
<otm:IntSavedQueryGid>
<otm:Gid>
<otm:DomainName>TEST</otm:DomainName>
<otm:Xid>FIND_DELIVERY_NUMBER</otm:Xid>
</otm:Gid>......etc.

我们必须从这个 XML 中选择一些值。

请提出一些解决此问题的方法。如果您还需要什么,请随时询问。

谢谢。 萨蒂扬

【问题讨论】:

标签: sql xml oracle xpath oracle12c


【解决方案1】:

示例 xml 具有命名空间。而且你必须使用它。

xmltype.extract('/otm:ShipmentStatus', 'xmlns:gtm="http://xmlns.oracle.com/apps/gtm/transmission/v6.4" 
xmlns:otm="http://xmlns.oracle.com/apps/otm/transmission/v6.4"')  extacting node from specify namespace 

xmltype.extract('/*:ShipmentStatus')  extractin node from any namespace 

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 2015-06-12
    • 2015-07-24
    • 2015-11-21
    • 2015-09-08
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2022-07-21
    相关资源
    最近更新 更多