Validar XML contra XSD (Factura electrónica)

1,144 views
Skip to first unread message

Jose Carlos Aguilar

unread,
Nov 2, 2016, 11:05:56 AM11/2/16
to Comunidad de Visual Foxpro en Español
Con la finalidad de validar nuestro XML-UBL antes de enviar a los ws de Sunat (valida cualquier xml contra xsd), es necesario validar nuestro Archivo.
Copio la rutina en .net (vb) que facilmente podemos incluirlo en nuestras librerias para consumirlo desde foxpro.

Imports System
Imports System.Xml
Imports System.Text
Imports System.Runtime.InteropServices

Imports System.Xml.Schema
Imports System.Windows.Forms


Namespace validarxml
    <ClassInterface(ClassInterfaceType.AutoDual)> _
    <ProgId("validarxml")> _
    Public Class validarxml
  
        Public Resultado As Boolean
        Public txtresultado As String
        Private Sub AdminEventoValidacion(sender As Object, args As ValidationEventArgs)
            Resultado = False
        End Sub
        Public Function validarXML(ByVal txtxml As String, ByVal txtxsd As String) As String
            Resultado = True
            txtresultado = "OK"
            'DESDE EL LLAMADO SE DEBERA VALIDAR LA EXISTENCIA DE LOS ARCHIVOS ENVIADOS COMO PARAMETROS
            Dim xmlR As New XmlTextReader(txtxml)
            Dim xsdR As New XmlValidatingReader(xmlR)
            Try
                xsdR.Schemas.Add(Nothing, txtxsd)
                xsdR.ValidationType = ValidationType.Schema
                AddHandler xsdR.ValidationEventHandler, New ValidationEventHandler(AddressOf AdminEventoValidacion)
                While xsdR.Read()
                    Application.DoEvents()
                End While
                xsdR.Close()
            Catch ex As Exception
                txtresultado = ex.Message
            End Try
            ' SI NO HAY NINGUN ERROR REVOLVERA OK  DE LO CONTRARIO DEVOLVERA ERROR
            xsdR.Close()
            Return txtresultado
        End Function

    End Class
End Namespace


De hecho que puede ser mejorado, pero es lo mas simple que encontré y adapté.

Rene Jara

unread,
Nov 2, 2016, 11:23:49 AM11/2/16
to publicesvfoxpro
Hola Carlos
creo que todo los del foro, sobre todos los del Peru, te deben dar los agradecimientos
por tan valiosa ayuda.

un abrazo



  



Cordialmente
Rene Jara Muñoz

Jose Carlos Aguilar

unread,
Nov 2, 2016, 11:39:07 AM11/2/16
to Comunidad de Visual Foxpro en Español
Lo validé con los XSd de la Dian y también funciona.
Saludos

Jean Pierre Adonis De La Cruz Garcia

unread,
Nov 2, 2016, 12:50:40 PM11/2/16
to Comunidad de Visual Foxpro en Español
Excelente trabajo Jose, la verdad que me han servido de mucho para ir mejorando mi sistema.

Patricio Muñoz

unread,
Nov 2, 2016, 1:43:46 PM11/2/16
to publice...@googlegroups.com
Yo luego debo hacer la factura electronica acá en Chile.... supongo que esto me servirá.... he visto mucho sobre esto en el foro, pero para otros paises.... supongo ademas que en todos los paises trabajan igual o de una manera muy parecida.


Bendiciones
--
Patricio Muñoz
Pro&Tech
Analista en Sistemas

Rene Jara

unread,
Nov 2, 2016, 2:46:15 PM11/2/16
to publicesvfoxpro
Hola Patricio
tengo todo funcionando en F.E., de echo estoy como proveedor en la pagina del SII

no se como quieres empezar tu modelo de negocio
  



Cordialmente
Rene Jara Muñoz

El 2 de noviembre de 2016, 12:43, Patricio Muñoz <protech...@gmail.com> escribió:
Yo luego debo hacer la factura electronica acá en Chile.... supongo que esto me servirá.... he visto mucho sobre esto en el foro, pero para otros paises.... supongo ademas que en todos los paises trabajan igual o de una manera muy parecida.


Bendiciones

Patricio Muñoz

unread,
Nov 2, 2016, 4:14:55 PM11/2/16
to publice...@googlegroups.com
Hola Rene y gracias por leerme

Tengo un sistema de punto de venta el cual genera facturas y boletas, y quiero que mis clientes tengan la posibilidad de generar la factura electronica desde mi sistema y no tener que pagar a un proveedor que haga esto. Ese es mi modelo, un poco simple jejeje

Bendiciones

Rene Jara

unread,
Nov 2, 2016, 4:25:19 PM11/2/16
to publicesvfoxpro
ok
cualquier cosa, puedes contar conmigo


  



Cordialmente
Rene Jara Muñoz

Jean Pierre Adonis De La Cruz Garcia

unread,
Nov 4, 2016, 1:21:51 PM11/4/16
to Comunidad de Visual Foxpro en Español
Que tal amigo Jose Carlos, con respecto a esta libreria, es para crear una DLL como las anteriores, y cual seria el modo para usarla desde VFP, Te agradezco tu respuesta amigo.

Jose Carlos Aguilar

unread,
Nov 4, 2016, 1:35:48 PM11/4/16
to Comunidad de Visual Foxpro en Español
Si amigo, pero te recomiendo que añadas esta funcion a tu libreria de manera tal que generes una sola dll .

Jean Pierre Adonis De La Cruz Garcia

unread,
Nov 4, 2016, 1:41:08 PM11/4/16
to Comunidad de Visual Foxpro en Español
perdona mi ignorancia, pero a que te refieres a tu libreria, a cual de ellas, no he comprendido de verdad.
Por cierto estuve llamando a tu celular para conversar algunas cosas que te mencione anteriormente, pero sigue aun apagado.

Jose Carlos Aguilar

unread,
Nov 4, 2016, 1:51:59 PM11/4/16
to Comunidad de Visual Foxpro en Español
Me parece que ya habias hecho una libreria para el firmado (vb.net) si es asi entonces solo tienes que agregar a esta clase la funcion para validar y asi  generar una sola libreria y no una por cada funcion que desees agregar.

Hay mucha info en internet donde explica como hacer esto porque por esta via es un poco tedioso explicarlos.
Suerte.

Jean Pierre Adonis De La Cruz Garcia

unread,
Nov 4, 2016, 1:53:59 PM11/4/16
to Comunidad de Visual Foxpro en Español
ok, te agradezco, voy a realizarlo de esa manera, te agradezco un monto, por tu gran apoyo.
Reply all
Reply to author
Forward
0 new messages