0

I have the following clob xml in my database:

<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>

And I am trying to return the ScanDocID attribute from the DOCUMENT tag.

I have tried the following:

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 ;

but i am not getting any rows returned. I have tried a similar query on an element and that returns the correct results

1 Answer 1

1

EXTRACT and EXTRACTVALUE have been deprecated. Instead, you should use XMLTABLE, something like:

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;
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.