como pasar un archivo TXT a XML?

Iniciado por agmen, 4 Octubre 2010, 20:24 PM

0 Miembros y 2 Visitantes están viendo este tema.

agmen

Hola a todos los que pasen por aki, tengo un problema de conocimientos a la hora de convertir un archivo txt a xml y espero encontrar la respuesta aki.
genere un archivo de ejemplo el cual se llama REGISTRO.TXT
y contiene lo siguiente:

20101004UDDES
20101004UDDES

en donde los 8 primeros caracteres corresponden a la fecha y los restantes a una empresa, todos los registros en este archivo son de largo fijo y los puedo obtener facilmente con un MID y guardarlos en una variable. pero nose como insertar esas variables en un archivo xml
dejo el codigo de lo que llevo.


Private Sub Command1_Click()
cd.ShowOpen
direccion = cd.FileName
End Sub

Private Sub Command2_Click()
Dim discriminante As String
Dim archivo As String
Dim fecha As String
Dim empresa As String
Dim registro As String
Dim sw As Integer

sw = 0

Open direccion For Input As #1
While Not EOF(1)
   Line Input #1, Linea
   discriminante = Mid$(Linea, 1, 6)
   If discriminante <> "HEADER" And discriminante <> "FOOTER" Then
      fecha = Mid$(Linea, 1, 8)
      empresa = Mid$(Linea, 21, 5)
      sw = 1
   End If
   If sw = 1 Then
      registro = fecha + empresa
      EscriveLog registro, "REGISTRO"
      sw = 0
   End If
Wend
Close #1
archivo = App.Path & "\" & "REGISTRO.txt"

' aki el codigo para convertir el archivo "REGISTRO.TXT" a registro.xml

Response = MsgBox("PROCESO TERMINADO", vbInformation, "empresa x")

End Sub



Public Function EscriveLog(ByRef Texto As String, ByRef tipo As String) ', ByRef xTipo As Byte)
   Dim strFile As String
   Dim fn As Long
   Dim strLog As String
   strFile = App.Path & "\" & tipo & ".txt"
   fn = FreeFile
   strLog = Texto
   Open strFile For Append As fn
       Print #fn, strLog
   Close fn
End Function


espero me puedan ayudar a crear el XML ya que no tengo idea del formato ni nada por el estilo.
de antemano. GRACIAS!

79137913

HOLA!!!

Para que querrias el XML. por que es un simple archivo de texto con extension .xml
Osea lo lees y lo escribis igual solo que en la ruta va archivo.XML
Queres presentar un informe, lo usas de debug, para que?

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

agmen

Porque lo tengo que entregar en xml, no me sirve en txt, pq del otro lado tienen un programa q lee e importa solo archivos xml

Gracias por responder

79137913

HOLA!!!

Preguntale que formato tiene que tener el texto interno del archivo

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

WestOn

Buenas.
Lee el contenido del .txt y escribelo usando write en un archivo con la extensión .xml.
Si no sabes como guardar el valor de una variable en un archuvo desde vb usa el buscador que hay muy buenos ejemplos  :rolleyes:

Saludos!

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
En mi cabeza existe una barrera espacio-tiempo de 4cm³. ¿Alguien sabe como eliminarla?.
                                                                                                                                                                                                                            

raul338

79137913 un XML es un archivo de texto con informacion en forma de arbol (al mas estilo HTML para los amigos :xD)

agmen tu lo que tienes que hacer es separar cada linea y cada campo, y con eso escribir algo como esto


<?xml>
<Datos>
 <cuenta>
     <fecha>4/10/2010</fecha>
     <nombre>UDDES</nombre>
 </cuenta>
 <cuenta>
     <fecha>5/10/2010</fecha>
     <nombre>ADDES</nombre>
 </cuenta>
</Datos>


:P como veras es todo estatico y maquillaje :)
De todas formas pregunta por el "information schema" para hacerlo compatible con el programa

agmen

yaa! preguntare que onda, pero mas tarde pq mi jefe se toma como 4 horas de colación, hare algo con lo que pusiste.. pero como se cuanto espacio tiene que haber entre el inico y <cuenta>
o del inico a <fecha>
o del inicio a <nombre>

???????

Gracias por responder

raul338

#7
El espaciado no importa, el motor xml lee por etiquetas, no importa que no hayan espacios:
<?xml>
<Datos>
 <cuenta><fecha>4/10/2010</fecha><nombre>UDDES</nombre></cuenta>
 <cuenta><fecha>5/10/2010</fecha><nombre>ADDES</nombre></cuenta>
</Datos>


o que hayan muchos:

<?xml>

<Datos>

<cuenta>

<fecha>
4/10/2010
</fecha>

<nombre>
UDDES
</nombre>

</cuenta>

<cuenta>

<fecha>
5/10/2010
</fecha>

<nombre>
ADDES
</nombre>

</cuenta>

</Datos>


El espaciado es puramente para su mejor lectura ante los programadores, al programa le da igual (aunque se sugiere que no hayan taaantos espacios (ej: 4 lineas vacias entre cada objeto) asi no se procesa tanto)

Las unicas condiciones son:


  • Tiene que haber un solo nodo raiz (cuentas)
  • Repetar la jerarquia (no cierres un nodo sin cerrar los que estan adentro del mismo)
  • No pueden haber nodos sin cerrar, ni cierres de nodos sin abrir
  • La primera linea siempre es la definicion de que el documento es un xml

:)

agmen

Gracias, veré que resulta de todo esto.
mas tarde te cuento como me fue

GRACIAS POR TODO,  TE PASASTE  ;-)


agmen

te cuento,

hice lo siguiente
archivo = App.Path & "\" & "REGISTRO.txt"
Open archivo For Input As #1
Escrivexml "<?xml>", "REGISTROXML"
Escrivexml "<Datos>", "REGISTROXML"
While Not EOF(1)
    Line Input #1, Linea
   
       fecha = Mid$(Linea, 1, 8)
       empresa = Mid$(Linea, 9, 5)
       
       registro = "<cuenta>" + "<fecha>" + fecha + "</fecha>" + "<empresa>" + empresa + "</empresa>" + "</cuenta>"
       Escrivexml registro, "REGISTROXML"
   
Wend

Escrivexml "</Datos>", "REGISTROXML"


me genero el .xml pero no abre ni a palos

tb probe insertando lo que escribiste tu  cambiandole la extension, pensando que no estaba quedando =
<?xml>
<Datos>
  <cuenta><fecha>4/10/2010</fecha><nombre>UDDES</nombre></cuenta>
  <cuenta><fecha>5/10/2010</fecha><nombre>ADDES</nombre></cuenta>
</Datos>


pero pasa lo mismo :S

se pega el explorer abre y abre ventanas

espero me puedas ayudar. Gracias