Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Ignore special characters in XMLtable element.

Sruthi TamiriApr 27 2016 — edited Apr 28 2016

Hi fac586,

I have created a sample xmltable, could you please let me know where & how to implement special characters

Following special characters requires to handle , before sending xml messages.

Invalid XML Character

Replaced With

<

&lt;

>

&gt;

"

&quot;

'

&apos;

&

&amp;


1. Procedure indicates calling web service call


  1. PROCEDURE XML_P1 (PI_EMPID        IN     NUMBER,                                     
  2.                   PI_EMPNAME      IN     VARCHAR2,                                          
  3.                   PI_DEPTNAME     IN     VARCHAR2,                                                                                 
  4.                   PO_EID          OUT    number, 
  5.                   PO_STATUS       OUT    NUMBER,                                          
  6.                   PO_ERROR        OUT    VARCHAR2  
  7.                   ) 
  8.    IS 
  9.       v_clob         VARCHAR2(32657);  
  10.       v_clob_val     CLOB; 
  11.       v_status       NUMBER; 
  12.       v_start_time   DATE
  13.       v_end_time     DATE
  14.        
  15.    BEGIN 
  16.       v_status := 0; 
  17.       po_error:=null
  18.       apex_web_service.g_request_headers(1).name := 'Content-type';   
  19.       apex_web_service.g_request_headers(1).value := 'Application/xml'
  20.    
  21.       v_clob_val :=             
  22.             '<PHASEI>'                  
  23.          || '<PI_EMPID>' 
  24.          || PI_EMPTID 
  25.          || '</PI_EMPID>'          
  26.          || '<PI_EMPNAME>' 
  27.          || PI_EMPNAME 
  28.          || '</PI_EMPNAME>'          
  29.          || '<PI_DEPTNAME>' 
  30.          || PI_DEPTNAME 
  31.          || '</PI_DEPTNAME>'          
  32.          || '</PHASEI>'
  33.           
  34.           
  35.           
  36.       v_clob := 
  37.             APEX_WEB_SERVICE.make_rest_request ( 
  38.               p_url           => 'http://10.201.178.77:8080/RESTfulWebService/SPoEst3Clob',               
  39.               p_http_method   => 'POST'
  40.               p_body          => v_clob_val); 
  41.                
  42.                
  43.               PO_EID:=v_clob;  
  44.               
  45.                
  46.  
  47.  
  48.       v_end_time := SYSDATE; 
  49.    EXCEPTION 
  50.       WHEN OTHERS 
  51.       THEN 
  52.          --v_status := 1; 
  53.          PO_STATUS:=1; 
  54.          PO_ERROR:=SUBSTR (SQLERRM, 1, 1200); 
  55.           
  56.    END XML_P1; 

2. Procedure two indicates using XMLtable format

  1. PROCEDURE XML_P2 ( 
  2.                                           PI_XML_DATA IN CLOB,  
  3.                                           PO_STATUS OUT NUMBER, 
  4.                                           PO_ERROR OUT VARCHAR2, 
  5.                                           P57_OUTPARAM OUT CLOB) 
  6.       IS 
  7.           l_xml               CLOB; 
  8.           l_start_time        DATE
  9.           l_end_time          DATE;           
  10.           PO_empid          NUMBER; 
  11.           po_clob_out         CLOB; 
  12.            
  13.            
  14.            
  15.             
  16.    BEGIN 
  17.       l_start_time := SYSDATE; 
  18.       po_status := 0; 
  19.       l_xml := PI_XML_DATA; 
  20.       PO_ERROR :=null
  21.        
  22.        
  23.       FOR CUR_REC 
  24.          IN (SELECT 
  25.                         X1.EMPID,                        
  26.                         X1.EMPNAME,                         
  27.                         X1.DEPTNAME                        
  28.      FROM XMLTABLE ( 
  29.                            'PHASEI' 
  30.                             PASSING XMLTYPE (l_xml) 
  31.       COLUMNS                
  32.                "EMPID"       NUMBER (20)         PATH 'PI_EMPID' ,                                           
  33.                "EMPNAME"     VARCHAR2 (200 BYTE) PATH 'PI_EMPNAME' ,                               
  34.                "DEPTNAME"    VARCHAR2 (200 BYTE) PATH 'PI_DEPTNAME' )X1)                
  35.                loop 
  36.                DBMS_OUTPUT.put_line(                      
  37.                      'EMPID='      || CUR_REC.EMPID        ||                      
  38.                      'EMPNAME='    || CUR_REC.EMPNAME      ||                    
  39.                      'DEPTNAME='   || CUR_REC.DEPTNAME      
  40.                      ); 
  41.                                              
  42.                       
  43.                       
  44.                       
  45.                       
  46.                end loop; 
  47.                 
  48.                l_end_time := SYSDATE; 
  49.             EXCEPTION 
  50.           WHEN OTHERS 
  51.           THEN 
  52.              po_status := 1; 
  53.               
  54.                
  55.          END XML_P2; 

3. Indicates block for reference

  1. DECLARE  
  2.   PI_XML_DATA CLOB; 
  3.   PO_STATUS NUMBER; 
  4.   PO_ERROR VARCHAR2(32767); 
  5.   P57_OUTPARAM CLOB; 
  6.   PO_EMPID VARCHAR2(32767); 
  7.    
  8.  
  9.  
  10. BEGIN  
  11.  
  12.  
  13.  
  14.  
  15.   PI_XML_DATA :='<PHASEI> 
  16.                           <PI_EMPID>1335713</PI_EMPID>                         
  17.                           <PI_EMPNAME>ETL & Oil.</PI_EMPNAME> 
  18.    <PI_DEPTNAME>Sunset & MoonSet.</PI_DEPTNAME> 
  19.                  </PHASEI>';   
  20.   PO_STATUS := NULL
  21.   PO_ERROR := NULL
  22.    
  23.  
  24.  
  25.   XMl_P2 ( PI_XML_DATA, PO_STATUS, PO_ERROR, P57_OUTPARAM ); 
  26.    
  27.   COMMIT;  
  28. END

Regards,

Sruthitamiri

This post has been answered by fac586 on Apr 27 2016
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 26 2016
Added on Apr 27 2016
21 comments
8,226 views