Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/12/2010, 19:50
Oscargf
 
Fecha de Ingreso: junio-2010
Mensajes: 23
Antigüedad: 9 años, 5 meses
Puntos: 1
Crear XML para factura electronica

Tengo algo de problemas para crear el archivo .xml desde 0 con xmlDocument,
por eso abro este tema.

Estaba creando el archivo xml con xmltextwriter de forma que se crea y guarda en el disco un archivo xml, pero ahora intento crear el xml en memoria, con la clase xmlDocument para poder hacer modificaciones (añadirle el sello ...) y al final gurdarla.

Con xmltextwriter me estaba funcionando bien. El codigo es este:
Código:
Dim Nombre As String = "c:/1/prueba.xml"
Dim W As New XmlTextWriter(nombre, Encoding.UTF8)



        ' NODO PRINCIPAL: COMPROBANTE

        W.WriteStartDocument()

        W.WriteStartElement("Comprobante")
        W.WriteStartAttribute("xmlns")
        W.WriteValue("http://www.sat.gob.mx/cfd/2")
        W.WriteEndAttribute()

        W.WriteStartAttribute("xmlns:xsi")
        W.WriteValue("http://www.w3.org/2001/XMLSchema-instance")
        W.WriteEndAttribute()

        W.WriteStartAttribute("xmlns:implocal")
        W.WriteValue("http://www.sat.gob.mx/implocal")
        W.WriteEndAttribute()


        W.WriteStartAttribute("xsi:schemaLocation")
        W.WriteValue("http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd")
        W.WriteEndAttribute()

        W.WriteStartAttribute("version")
        W.WriteValue("2.0")
        W.WriteEndAttribute()

        W.WriteStartAttribute("serie") ' opcional
        W.WriteValue("E123456789")
        W.WriteEndAttribute()

        W.WriteStartAttribute("folio")
        W.WriteValue("1234567890")
        W.WriteEndAttribute()

        W.WriteStartAttribute("fecha")
        W.WriteValue("2010-06-07T18:20:50")
        W.WriteEndAttribute()

        W.WriteStartAttribute("sello")
        W.WriteValue("aqui va el sello")
        W.WriteEndAttribute()

        W.WriteStartAttribute("noAprobacion")
        W.WriteValue("12345678")
        W.WriteEndAttribute()

        W.WriteStartAttribute("anoAprobacion")
        W.WriteValue("2010")
        W.WriteEndAttribute()

		'poner los demas atributos: formaDePago, noCertificado, certificado, condiciones de pago, subtotal etc etc)

         


        '.................................................NODO  EMISOR
        W.WriteStartElement("emisor")

        W.WriteStartAttribute("RFC")
        W.WriteValue(emisor1.rfc)
        W.WriteEndAttribute()

        W.WriteStartAttribute("nombre")
        W.WriteValue(emisor1.nombre)
        W.WriteEndAttribute()


        'subnodo Direccion emisor

        W.WriteStartElement("DomicilioFiscal")

        W.WriteStartAttribute("calle")
        W.WriteValue(emisor1.calle)
        W.WriteEndAttribute()

        W.WriteStartAttribute("noExterior")     ' opcional
        W.WriteValue(emisor1.noExterior)
        W.WriteEndAttribute()

        W.WriteStartAttribute("Colonia")          ' opcional
        W.WriteValue(emisor1.colonia)
        W.WriteEndAttribute()

        W.WriteStartAttribute("Municipio")
        W.WriteValue(emisor1.municipio)
        W.WriteEndAttribute()

        '.....continuar con lo que falta: estado, pais, codigoPostal

       

        W.WriteEndElement()  'finaliza direccion

        W.WriteEndElement()

        '...........................................finaliza EMISOR

	   W.WriteEndDocument()      '.............finaliza documento 


        W.Flush()
        W.Close()
donde emisor1 es un objeto de la clase emisor, con todos los datos del emisor

el resultado seria:

Código:
<?xml version="1.0" encoding="utf-8" ?> 
- <Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:implocal="http://www.sat.gob.mx/implocal" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd" version="2.0" serie="E123456789" folio="1234567890" fecha="2010-06-07T18:20:50" sello="aqui va el sello" noAprobacion="12345678" anoAprobacion="2010">
- <emisor RFC="HAZ9903238SDF" nombre="HOTEL AZO S.A. DE C.V.">
   <DomicilioFiscal calle="GUSTAVO BAZ" noExterior="806" Colonia="SAN AMARO"   Municipio="NAUCALPAN" /> 
  </emisor>
  </Comprobante>
sin embargo, con xmlDocument, no consigo crear los atributos del nodo raiz:
el xmlns:xsi=... xsi:schemalocation=...

¿hay alguien que sepa como se hace ?