Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

problemas con xml y vb6

Estas en el tema de problemas con xml y vb6 en el foro de Visual Basic clásico en Foros del Web. hola expertos desde hace un par de dias que estoy intentando crear un xml en vb6 desde unos datos introducidos en excel el problema que ...
  #1 (permalink)  
Antiguo 02/10/2009, 11:26
 
Fecha de Ingreso: junio-2009
Mensajes: 7
Antigüedad: 14 años, 10 meses
Puntos: 0
problemas con xml y vb6

hola expertos

desde hace un par de dias que estoy intentando crear un xml en vb6 desde unos datos introducidos en excel

el problema que tengo es a la hora de generar el xml con MSXML2.DOMDocument que me lo generara en ANSI cuando yo quiero generarlo en UTF-8

sabeis algun modo para poder hacerlo???

al principio intente hacerlo con "Open XMLFileName For Output As #1" y escribir ahi todo el codigo xml que quiero pero esto me genera un xml en ANSI

ahora estoy intentando hacerlo con "MSXML2.DOMDocument" y veo que tambien me lo genera en ANSI

Option Explicit
Dim DOMDoc As MSXML2.DOMDocument

Sub importar()
Dim xmlDoc As MSXML2.DOMDocument
Dim raiz As MSXML2.IXMLDOMElement
Dim fechas As MSXML2.IXMLDOMElement

Set xmlDoc = New MSXML2.DOMDocument
xmlDoc.appendChild xmlDoc.createElement("raiz")

Set raiz = xmlDoc.selectSingleNode("//raiz")

raiz.appendChild xmlDoc.createElement("Fechas")

Set fechas = xmlDoc.selectSingleNode("//Fechas")

fechas.appendChild xmlDoc.createElement("fecha")
xmlDoc.selectSingleNode("//fecha").Text = "TEXTO1"

fechas.appendChild xmlDoc.createElement("fecha")
xmlDoc.selectSingleNode("//fecha").Text = "TEXTO2"

fechas.appendChild xmlDoc.createElement("fecha")
xmlDoc.selectSingleNode("//fecha").Text = "TEXTO3"


xmlDoc.Save "c:\prueba.xml"
End Sub

Agradezco cualquier ayuda
  #2 (permalink)  
Antiguo 02/10/2009, 12:04
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: problemas con xml y vb6

Para los que no conocemos bien el tema, ¿en que se diferencian los ficheros ansi y udf-8?
Osea, ¿nos puedes poner un ejemplo o algo? Estoy mirando en google y no me aclaro con el tema. ¿Que caracteres cambian? Cuando guardo un fichero de texto ansi como udf me inserta 3 caracteres al comienzo del texto (invisibles si lo editas con el bloc de notas) y cambian las letras con acento. ¿Que mas diferencias hay? ¿Cambia tambien los crlf del final de las líneas como creo que hacía cuando lo pasabas a unicode?
Digo todo esto porque, aparte de que algunos aprendamos algo, igual encontramos la manera (si es que la hay) de convertir tu ansi a udf antes de guardarlo en el disco.
Quizá puedes escribir el fichero en modo binario e insertar los valores de los caracteres que necesitas, o quien sabe que locura se nos puede ocurrir.

Un saludo
  #3 (permalink)  
Antiguo 13/10/2009, 10:42
 
Fecha de Ingreso: junio-2009
Mensajes: 7
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problemas con xml y vb6

por si a alguien le interesa ya lo he solucionado
pongo el codigo

Function WriteUTF8(sText As String, sFile As String) As Boolean
' Returns True if sText saved successfully as UTF-8 in sFile

On Error GoTo Oops

#If EarlyBound Then
' Requires a reference to Microsoft ActiveX Data Objects
With New ADODB.Stream
#Else
' No reference required
Const adTypeText As Long = 2
Const adSaveCreateOverWrite As Long = 2
With CreateObject("ADODB.Stream")
#End If
.Type = adTypeText
.Charset = "utf-8"
.Open
.WriteText sText
.SaveToFile FileName:=sFile, _
Options:=adSaveCreateOverWrite
WriteUTF8 = True
End With
Exit Function

Oops:
MsgBox Err.Description
End Function

Ahora estoy intentando hacer el siguiente paso que seria leer de un fichero UTF-8 si alguien tiene alguna idea????
  #4 (permalink)  
Antiguo 13/10/2009, 10:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problemas con xml y vb6

Puedes usar estas funciones de codificación/decodificación para procesar esos archivos:
http://www.codetoad.com/asp_utf8.asp

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 22/10/2009, 06:06
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con xml y vb6

Yo tengo el mismo problema pero, tengo una hoja excel y he creado VBA que va recorriendo las diferentes celdas y genera un xml pero no consigo que la codificacion sea utf-8 pued en unicode y Ansi con la siguiente
Set sFic = fSys.CreateTextFile(strArchivoTexto, True, True), dependiendo del segundo argumento True=UNICODE False=ANSI. alguna idea?
Un saludo
  #6 (permalink)  
Antiguo 08/04/2011, 09:56
Avatar de elfkampher  
Fecha de Ingreso: febrero-2011
Ubicación: Queretaro, Mexico
Mensajes: 35
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: problemas con xml y vb6

Cita:
Iniciado por chei Ver Mensaje
por si a alguien le interesa ya lo he solucionado
pongo el codigo

Function WriteUTF8(sText As String, sFile As String) As Boolean
' Returns True if sText saved successfully as UTF-8 in sFile

On Error GoTo Oops

#If EarlyBound Then
' Requires a reference to Microsoft ActiveX Data Objects
With New ADODB.Stream
#Else
' No reference required
Const adTypeText As Long = 2
Const adSaveCreateOverWrite As Long = 2
With CreateObject("ADODB.Stream")
#End If
.Type = adTypeText
.Charset = "utf-8"
.Open
.WriteText sText
.SaveToFile FileName:=sFile, _
Options:=adSaveCreateOverWrite
WriteUTF8 = True
End With
Exit Function

Oops:
MsgBox Err.Description
End Function

Ahora estoy intentando hacer el siguiente paso que seria leer de un fichero UTF-8 si alguien tiene alguna idea????
mmm bueno si el fichero lo almacenaste en un archivo de texto puedes hacer lo siguiente
Dim linea as String
n_file = FreeFlile
Open "ubicacion\ficheroutf8.txt" For Input As n_file
Line input #n_file, linea
Close #n_file 'es recomendable cerrar los archivos que estes manejando
'por eso puse el close pero si lo vas a usar mas delante omitelo unque ya tienes
'tu utf8 en la cadena linea
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:08.