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:
donde emisor1 es un objeto de la clase emisor, con todos los datos del emisorDim 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()
el resultado seria:
Código:
sin embargo, con xmlDocument, no consigo crear los atributos del nodo raiz:<?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>
el xmlns:xsi=... xsi:schemalocation=...
¿hay alguien que sepa como se hace ?