【问题标题】:Selecting a Attribute value from Oracle Clob XML从 Oracle Clob XML 中选择属性值
【发布时间】:2016-02-04 15:23:32
【问题描述】:

我的数据库中有以下 clob xml:

<HXML
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<BATCH>
    <FOLDER Class="SDER" AppUserLocation="0001" AppUserID="">
        <DOCUMENTS>
            <DOCUMENT ScanDocID="28/11/2013 0805353505 LNFDDDF" Type="RLAFASDFSSESS" Processed="Y">
                <IMAGE FileName="\\sitFDAF16\FDS\radCB056.pdf" CRC="FSDAF"></IMAGE>
            </DOCUMENT>
             <DOCUMENT ScanDocID="28/11/2013 343 LNFDDDF" Type="FDSF" Processed="Y">
                <IMAGE FileName="\\sitFDAF16\FDS\radCB056.pdf" CRC="FSDAF"></IMAGE>
            </DOCUMENT>
             <DOCUMENT ScanDocID="28/11/2013 3434 LNFDDDF" Type="FASDFASD" Processed="Y">
                <IMAGE FileName="\\sitFDAF16\FDS\radCB056.pdf" CRC="FSDAF"></IMAGE>
            </DOCUMENT>
        </DOCUMENTS>
    </FOLDER>
</BATCH>

我正在尝试从 DOCUMENT 标记返回 ScanDocID 属性。

我尝试了以下方法:

with 
   xmlData 
    as 
( select
      XMLTYPE(x.xmldoc) xml 
 from
      c_xml_doc x 
  where x.cxd_id in ('269814','269815','247336','269816')) 
      select 
          x.xml.EXTRACT('//HXML/BATCH/FOLDER/DOCUMENTS/DOCUMENT["ScanDocID"]/text()')
  from 
      xmlData x ;

但我没有返回任何行。我在一个元素上尝试过类似的查询并返回正确的结果

【问题讨论】:

    标签: sql xml oracle plsql


    【解决方案1】:

    EXTRACTEXTRACTVALUE 已被弃用。相反,您应该使用XMLTABLE,例如:

    with 
       xmlData 
        as 
    ( select 1 id,
          XMLTYPE('<HXML
    xmlns:dt="urn:schemas-microsoft-com:datatypes">
    <BATCH>
        <FOLDER Class="SDER" AppUserLocation="0001" AppUserID="">
            <DOCUMENTS>
                <DOCUMENT ScanDocID="28/11/2013 0805353505 LNFDDDF" Type="RLAFASDFSSESS" Processed="Y">
                    <IMAGE FileName="\\sitFDAF16\FDS\radCB056.pdf" CRC="FSDAF"></IMAGE>
                </DOCUMENT>
                 <DOCUMENT ScanDocID="28/11/2013 343 LNFDDDF" Type="FDSF" Processed="Y">
                    <IMAGE FileName="\\sitFDAF16\FDS\radCB056.pdf" CRC="FSDAF"></IMAGE>
                </DOCUMENT>
                 <DOCUMENT ScanDocID="28/11/2013 3434 LNFDDDF" Type="FASDFASD" Processed="Y">
                    <IMAGE FileName="\\sitFDAF16\FDS\radCB056.pdf" CRC="FSDAF"></IMAGE>
                </DOCUMENT>
            </DOCUMENTS>
        </FOLDER>
    </BATCH>
    </HXML>') xmld
     from
          dual x) 
    select x.id,
           xt.scan_doc_id,
           xt.image_file_name,
           xt.image_crc
    from   xmlData x,
           xmltable('/HXML/BATCH/FOLDER/DOCUMENTS/DOCUMENT'
                    passing x.xmld
                    columns scan_doc_id varchar2(50) path '@ScanDocID',
                            image_file_name varchar2(100) path 'IMAGE/@FileName',
                            image_crc varchar2(20) path 'IMAGE/@CRC') xt;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-20
      • 2018-02-23
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多