2 Ответы Последний ответ: 24.03.2019 4:14, автор: jeffreehy-JavaNet

    How to parse XML from PL/SQL

    jeffreehy-JavaNet

      Hi all.

      I'm trying to parse an xml response from PL/SQL but not getting the fields back.

       

      This is my xml:

       

      <?xml version='1.0' encoding='UTF-8'?>

      <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

      <S:Body>

      <ns2:ConsultaEEHResponse xmlns:ns2="http://jeta.servicios.ws/">

      <return>

      <codigoError>6</codigoError>

      <mensaje>El Banco se encuentra Inactivo para Recaudo.</mensaje>

      <resultado>false</resultado>

      </return>

      </ns2:ConsultaEEHResponse>

      </S:Body></S:Envelope>

       

      This is my snippet PL/SQL code:

       

      open p_recordset for

          with XML as

           (select XMLTYPE(vCampo1) as OBJECT_VALUE from dual)

          select *

            from XML,

       

       

                 XMLTABLE(xmlnamespaces('http://schemas.xmlsoap.org/soap/envelope/' as "S",

       

       

                                 default  'http://jeta.servicios.ws/'),  --  as "ns2",

                                      --default 'http://schemas.servicestack.net/types'),

                         '//*:return'

                         passing OBJECT_VALUE columns

                         "codigoError" varchar2(5) PATH 'codigoError',

                         "mensaje" varchar2(200) PATH 'mensaje',

                         "Resultado" varchar2(5) PATH 'resultado') ;

      end CONSULTA_EEH;

       

      please help me. Thank you very much.

        • 1. Re: How to parse XML from PL/SQL
          mNem
          with t (vCampo1) as 
          (
          select 
          '<?xml version="1.0" encoding="UTF-8"?>
          <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
          <S:Body>
          <ns2:ConsultaEEHResponse xmlns:ns2="http://jeta.servicios.ws/">
          <return>
          <codigoError>6</codigoError>
          <mensaje>El Banco se encuentra Inactivo para Recaudo.</mensaje>
          <resultado>false</resultado>
          </return>
          </ns2:ConsultaEEHResponse>
          </S:Body>
          </S:Envelope>' 
          from dual
          )
          select a.*
          from t,
          XMLTABLE(
              xmlnamespaces(
                'http://schemas.xmlsoap.org/soap/envelope/' as "S",
                'http://jeta.servicios.ws/'                 as "ns2"
              ),
               '/S:Envelope/S:Body/ns2:ConsultaEEHResponse/return'
               passing xmltype(vCampo1) 
               columns 
               codigoError varchar2(5) PATH 'codigoError',
               mensaje varchar2(200) PATH 'mensaje',
               Resultado varchar2(5) PATH 'resultado'
          )a 
          ;
          
          1 пользователь считает эту информацию полезной
          • 2. Re: How to parse XML from PL/SQL
            jeffreehy-JavaNet

            Yes. Thank you very much, I try similar way, but I missed one ")" so a got compilation error. Some time you got the answer in front of you but got blind. Appreciate your help.