FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour AEAT - libreria mxml - errores
Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM
AEAT - libreria mxml - errores
Posted: Thu Mar 21, 2019 01: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 (fw): Select all Collapse
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 (fw): Select all Collapse
<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.
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: AEAT - libreria mxml - errores
Posted: Thu Mar 21, 2019 04: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. ;-)

Continue the discussion