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 ?