繁体   English   中英

使用XML在Oracle数据库中从NCLOB中提取XML数据

[英]Extracting XML data from NCLOB from XML with attributes in Oracle db

我试图从存储为Oracle db表中NCLOB列的XML数据中提取值。

xml结构

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://example.com/FAS/DOC/2011/v3.0b" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <record xmlns="http://example.com/FAS/DOC/2011/v3.0b">
    <pdate xmlns="http://example.com/FAS/DOC/2011/v3.0b">2014-05-15</pdate>
  </record>
</root>

询问

select EXTRACTVALUE(XMLTYPE(nclob_column),'/root/record/pdate','xmlns="http://example.com/FAS/DOC/2011/v3.0b"') pdate1,
       EXTRACTVALUE(XMLTYPE(nclob_column),'/root/record/pdate') pdate2
from   nclob_table

问题

pdate1确实返回值,但pdate2返回null。 我不能使用EXTRACTVALUE()的第三个参数来指定xmlns属性值,因为该值在每行/记录上都会改变。 因此,我得到了一行的值,而其他所有行都为空。

如何在不指定属性的情况下提取值?

谢谢。

如果可以保证在这种情况下名称空间对于选择一个元素无关紧要,则可以使用local-name()仅通过元素的本地名称来匹配该元素,而忽略名称空间:

select EXTRACTVALUE(
            XMLTYPE(nclob_column),
            '/*[local-name()="root"]/*[local-name()="record"]/*[local-name()="pdate"]'
        ) pdate
from   nclob_table

SQL小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM