Pregunta
· 2 feb, 2023

Importar Archivo XML

Hola !
Estamos investigando el tema de la generación de la factura electrónica.

Vemos que desde la página la factura e (Factura Electrónica - Últimas versiones Facturae), hay un enlace para descargar el fichero (Esquema XSD formato Facturae 3.2.2 [XML] [185,61 KB]).

 

Una vez descargado el fichero lo intentamos incorporar al studio de cache y nos da un error al importarlo.

Lo importamos desde: Herramientas -> Complementos -> Asistente de Esquemas XML. Seleccionamos el fichero que nos hemos descargado y aparentemente la estructura la pone bien pero luego da error importarlo (“DTD's explicity prohibited)” 

El error viene por la línea del xml que hace un xs:import, ya que hemos comprobado que si la quitamos nos deja continuar pero falta la declaración de una parte del esquema que en la url que hace el import. 

Puede que tengamos que activar algo en el servidor para que nos deje importarlo ¿?

También lo hemos intentado desde: Herramientas -> Complementos -> Asistente de Soap y nos da algo parecido.

Alguna idea de que porque puede ser ¿?

Gracias y un saludo.

Product version: IRIS 2019.1
Comentarios (1)3
Inicie sesión o regístrese para continuar

Hola Oscar,
Por temas de seguridad, la importación de DTDs (que es mecanismo obsoleto para definiciones XML) no se permite en el asistente de esquemas XML.
Sin, embargo, puedes realizar una importación manual con este código:
 

Class XML.SchemaReader Extends %Persistent
{
ClassMethod ImportClasses(fileName As %String = "C:\Temp\Fw__Importación_de_clases_TicketBai\Esquemas de archivos XSD de envío y anulación de factura_1_2\ticketBai V1-2.xsd") As %Status
{
#include %occInclude
#include %occSAX
    #dim sReader as %XML.Utils.SchemaReader = ##class(%XML.Utils.SchemaReader).%New()
    #dim features as Filero.DataType.String
    set sReader.SAXFlags = $$$SAXFULLDEFAULT-$$$SAXVALIDATIONREUSEGRAMMAR
    set sReader.MakePersistent = 0
    set sReader.MakeRelationships = 0
    set sReader.GenerateXMLNILNOOBJECT = 1
    set sReader.GenerateXMLNIL = 1
    set sReader.KeepEmptyClasses = 1
    set features("BINARYASSTREAM") = 1
    quit sReader.Process(fileName,"ImportedScheme",.features)
}

}

También, tenemos un ejemplo (un poco antiguo) de como realizar la firma XADES para facturae desde ObjectScript