Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: agmen en 4 Octubre 2010, 20:24 pm



Título: como pasar un archivo TXT a XML?
Publicado por: agmen en 4 Octubre 2010, 20:24 pm
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.

Código:
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


Código:
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!


Título: Re: como pasar un archivo TXT a XML?
Publicado por: 79137913 en 4 Octubre 2010, 20:45 pm
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!!!


Título: Re: como pasar un archivo TXT a XML?
Publicado por: agmen en 4 Octubre 2010, 20:48 pm
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


Título: Re: como pasar un archivo TXT a XML?
Publicado por: 79137913 en 4 Octubre 2010, 20:50 pm
HOLA!!!

Preguntale que formato tiene que tener el texto interno del archivo

GRACIAS POR LEER!!!


Título: Re: como pasar un archivo TXT a XML?
Publicado por: WestOn en 4 Octubre 2010, 20:53 pm
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.


Título: Re: como pasar un archivo TXT a XML?
Publicado por: raul338 en 4 Octubre 2010, 20:54 pm
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

Código:
<?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


Título: Re: como pasar un archivo TXT a XML?
Publicado por: agmen en 4 Octubre 2010, 21:04 pm
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


Título: Re: como pasar un archivo TXT a XML?
Publicado por: raul338 en 4 Octubre 2010, 21:09 pm
El espaciado no importa, el motor xml lee por etiquetas, no importa que no hayan espacios:
Código:
<?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:
Código:
<?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

:)


Título: Re: como pasar un archivo TXT a XML?
Publicado por: agmen en 4 Octubre 2010, 21:17 pm
Gracias, veré que resulta de todo esto.
mas tarde te cuento como me fue

GRACIAS POR TODO,  TE PASASTE  ;-)



Título: Re: como pasar un archivo TXT a XML?
Publicado por: agmen en 4 Octubre 2010, 21:48 pm
te cuento,

hice lo siguiente
Código:
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 =
Código:
<?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


Título: Re: como pasar un archivo TXT a XML?
Publicado por: raul338 en 4 Octubre 2010, 22:16 pm
es porque la primera linea esta mal, (no tuve ganas de buscar cual es la linea :xD) la primera linea si o si debe ser esta

Código:
<?xml version="1.0" encoding="UTF-8" ?>

y ahi si abrira :)


Título: Re: como pasar un archivo TXT a XML?
Publicado por: agmen en 4 Octubre 2010, 22:55 pm
Gracias!!!! ahora si funka, voy a pasarle datos ahora  ;-)