AEAT - libreria mxml - errores

AEAT - libreria mxml - errores

Postby Verhoven » Thu Mar 21, 2019 1:16 pm

Para ahorrarle a alguno posibles pérdidas de tiempo o por si a alguien se le ocurre una solución porque yo tenga algún error publico el problema con la que me he encontrado.

Al utilizar la librería mxml de harbour para generar ficheros xml con la finalidad de poder intercambiar mensajes xml con la AEAT (Agencia Tributaria española) mediante el Web Service he tenido que dedicar bastante tiempo debido a que la AEAT da como erroneos los xml generados con esta librería de Harbour porque introduce unos caracteres CRLF que a la AEAT no le gustan.

El código utilizado es:
Code: Select all  Expand view
function xml_test_gen()
   local cFichSalida:="TEST_XML.xml"  
   local xml, root, header, body, Declarante
   local oXml  // Para comprobar al final que el xml generado se puede parsear.
 
   xml  := mxmlNewXML()  // Sin argumentos asume que es la "1.0"

   root := mxmlNewElement( xml, "soapenv:Envelope" )
        // Atributos de "soapenv:Envelope"
        mxmlElementSetAttr( root, "xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope/" )
        mxmlElementSetAttr( root, "xmlns:ie2", "https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/IeXXXV1Ent.xsd" )
        mxmlElementSetAttr( root, "xmlns:cab", "https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/cab.xsd" )
       
   header := mxmlNewElement(root, "soapenv:Header")
   
   body   := mxmlNewElement(root, "soapenv:Body")

     //Declarante
     Declarante := mxmlNewElement(body, "ie2:IeXXX")
           mxmlElementSetAttr( Declarante, "Id"              , dtos(date())+strzero(12345,9) )
           mxmlElementSetAttr( Declarante, "NifDeclarante"   , "99999999R" )
           mxmlElementSetAttr( Declarante, "NombreDeclarante", "JUAN MANOLO MANOLO" )

   mxmlSaveFile( xml, cFichSalida, MXML_OPAQUE_CALLBACK )
   
   /*MXML_OPAQUE_CALLBACK constant which specifies that all data nodes in the
     document contain opaque string values with whitespace preserved. */

   
  // Parsea el fichero xml para comprobar que cumple con el formato xml.  
  oXML := mxmlLoadString ( NIL, hb_MemoRead( cFichSalida ), MXML_OPAQUE_CALLBACK )
 
  if empty( oXML )
     msgstop("No generó el fichero XML correctamente: "+cFichSalida,"ERROR FICHERO XML")
    else
     msginfo("Generó fichero: "+cFichSalida,"Proceso terminado")
  endif

   mxmlDelete( xml )
   mxmlDelete( root )
   mxmlDelete( header )
   mxmlDelete( body )
   mxmlDelete( Declarante )
   mxmlDelete( oXML )
return nil


Y el error devuelto por la AEAT es:
Code: Select all  Expand view
<faultstring>Codigo[1304].El tipo de elemento "soapenv:Envelopexmlns" debe ir seguido por una de estas especificaciones de atributo: ">" o "/>". (1,61)</faultstring>


Aunque sin embargo, en los navegadores, el xml generado con la librería reseñada se ven bien y lo dan por correctos.
Verhoven
 
Posts: 505
Joined: Sun Oct 09, 2005 7:23 pm

Re: AEAT - libreria mxml - errores

Postby hmpaquito » Thu Mar 21, 2019 4:01 pm

Gracias por la info, que seguro que alguien sin identificar sabe aprovechar. :roll:
No es mi caso. Yo lo monté todo con archivos de texto.
Te espera una buena. Buena suerte. ;-)
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 46 guests