import csv
import xml.etree.ElementTree as ET
def convertir_a_xml(archivo_plano, archivo_xml):
# Leer el archivo plano y procesar los datos
with open(archivo_plano, 'r') as file:
# Determinar el delimitador adecuado según el formato del archivo plano (por ejemplo, ',' para CSV)
delimitador = ','
# Leer el contenido del archivo y separar las filas
filas = file.read().splitlines()
# Obtener los encabezados de las columnas (opcional)
encabezados = filas[0].split(delimitador)
# Crear el elemento raíz del XML
raiz = ET.Element('datos')
# Recorrer las filas de datos
for fila in filas[1:]:
# Separar los valores de la fila
valores = fila.split(delimitador)
# Crear un elemento para cada fila
elemento_fila = ET.SubElement(raiz, 'fila')
# Recorrer los valores y crear elementos hijos con los datos
for i, valor in enumerate(valores):
# Usar los encabezados como nombres de elementos hijos (opcional)
nombre_elemento = encabezados[i] if i < len(encabezados) else f'columna_{i+1}'
# Crear el elemento hijo con el valor correspondiente
elemento_hijo = ET.SubElement(elemento_fila, nombre_elemento)
elemento_hijo.text = valor
# Crear el árbol XML a partir del elemento raíz
arbol_xml = ET.ElementTree(raiz)
# Guardar el árbol XML en el archivo
arbol_xml.write(archivo_xml, encoding='utf-8', xml_declaration=True)
# Ejemplo de uso
archivo_plano = 'ruta/del/archivo_plano.txt'
archivo_xml = 'ruta/del/archivo_xml.xml'
convertir_a_xml(archivo_plano, archivo_xml)