- Tema Autor
- #1
Hola a todos, espero me puedan ayudar con este código porque no he podido dar con la instrucción adecuada. Estoy haciendo el desarrollo de la factura electrónica en VB .Net 2008 y mi problema está al poner el parámetro de "xmlns" que requiere hacienda en el archivo. A continuación escribo como estoy haciendo el proceso:
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.NewLineOnAttributes = True
Using writer As XmlWriter = XmlWriter.Create("C:\factura.xml", settings)
writer.WriteStartDocument()
writer.WriteStartElement("Comprobante")
writer.WriteAttributeString("xmlns", "http://www.sat.gob.mx/cfd/2") 'EN ESTA LINEA ES DONDE ME APARECE ERROR "No se puede volver a definir el prefijo '' de '' a 'http://www.sat.gob.mx/cfd/2' dentro de la misma etiqueta de elemento inicial"
writer.WriteAttributeString("xmlns", "xsi", Nothing, "http://www.w3.org/2001/XMLSchema-instance")
writer.WriteAttributeString("xsi", "schemaLocation", Nothing, "http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd")
writer.WriteStartAttribute("version")
writer.WriteValue("2.0")
writer.WriteEndAttribute()
.
.
.
.
.
ETC
writer.WriteEndElement()
writer.WriteEndDocument()
writer.Flush()
Lo que yo espero es que el XML quede de esta forma:
<?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" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd" version="2.0" serie="EL" folio="1764" ...............ETC
Medio me funciona si cambio la línea del error por la siguiente
writer.WriteStartElement("Comprobante", "http://www.sat.gob.mx/cfd/2")
Así ya no marca error y se crea el XML, pero la parte del "xmlns" me la manda hasta el final del elemento y no antes de xmlns:xsi y xsi:schemaLocation
Espero haberme dado a entender y ojalá alguien me pueda ayudar con esto.
Muchas gracias
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.NewLineOnAttributes = True
Using writer As XmlWriter = XmlWriter.Create("C:\factura.xml", settings)
writer.WriteStartDocument()
writer.WriteStartElement("Comprobante")
writer.WriteAttributeString("xmlns", "http://www.sat.gob.mx/cfd/2") 'EN ESTA LINEA ES DONDE ME APARECE ERROR "No se puede volver a definir el prefijo '' de '' a 'http://www.sat.gob.mx/cfd/2' dentro de la misma etiqueta de elemento inicial"
writer.WriteAttributeString("xmlns", "xsi", Nothing, "http://www.w3.org/2001/XMLSchema-instance")
writer.WriteAttributeString("xsi", "schemaLocation", Nothing, "http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd")
writer.WriteStartAttribute("version")
writer.WriteValue("2.0")
writer.WriteEndAttribute()
.
.
.
.
.
ETC
writer.WriteEndElement()
writer.WriteEndDocument()
writer.Flush()
Lo que yo espero es que el XML quede de esta forma:
<?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" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd" version="2.0" serie="EL" folio="1764" ...............ETC
Medio me funciona si cambio la línea del error por la siguiente
writer.WriteStartElement("Comprobante", "http://www.sat.gob.mx/cfd/2")
Así ya no marca error y se crea el XML, pero la parte del "xmlns" me la manda hasta el final del elemento y no antes de xmlns:xsi y xsi:schemaLocation
Espero haberme dado a entender y ojalá alguien me pueda ayudar con esto.
Muchas gracias