XML - XML AYUDAAAAAAAAAAAAA

 
Vista:

XML AYUDAAAAAAAAAAAAA

Publicado por Nicolas (1 intervención) el 22/02/2004 22:10:54
Hola a todos!!!

Me piden que escriba los prototipos de funciones de una biblioteca (creada por mi) que encapsulela escritura y parseo de este XML que pego a continuacion:
Aclaro, que es la primera vez que hago este tipo de cosas y la idea no es que Uds trabajen por mi, solo necesito la idea basica para resolver esto y RE ACLARO, no quiero que lo hagan por mi. Estoy en contra de la gente que hace este tipo de preguntas, es mas, las he condenado, pero bueno....alguna vez me tenia q pasar de preguntar algo de lo cual no tengo la menor idea (de muchas cosas no tengo idea)
Aclaro tambien que no tengo ni me dejan usar DOM o SAX.

Les pego el XML:

<EMPLEADO nombre="Miguel" apellido="Fernandez" sexo="M"/>
<EMPLEADO nombre="Mercedes" apellido="Schmith" sexo="F" dni="25124563"/>
<HORARIO>
<INTERVALO entrada="10:20" salida="14:20">Maniana<INTERVALO/>
<INTERVALO entrada="18:20" salida="20:00">Tarde<INTERVALO/>
<HORARIO/>
<HIJO nombre="Gimena" apellido="Schmith" sexo="F"/>
<HIJO nombre="Martin" apellido="Schmith" sexo="M"/>
<EMPLEADO/>

Les pido una minima ayuda para arrancar

Salu2!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Encapsulación de escritura y análisis de XML sin utilizar DOM o SAX

Publicado por Alejandro (258 intervenciones) el 10/07/2023 17:40:42
Aquí tienes un ejemplo básico de cómo podrías definir los prototipos de funciones para encapsular la escritura y el análisis de ese XML sin utilizar DOM o SAX:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Función para escribir el XML
def escribir_xml(nombre, apellido, sexo, dni=None):
    if dni is None:
        empleado = f'<EMPLEADO nombre="{nombre}" apellido="{apellido}" sexo="{sexo}"/>'
    else:
        empleado = f'<EMPLEADO nombre="{nombre}" apellido="{apellido}" sexo="{sexo}" dni="{dni}"/>'
    return empleado
 
def escribir_horario(intervalos):
    horario = '<HORARIO>\n'
    for intervalo in intervalos:
        entrada = intervalo['entrada']
        salida = intervalo['salida']
        descripcion = intervalo['descripcion']
        horario += f'\t<INTERVALO entrada="{entrada}" salida="{salida}">{descripcion}</INTERVALO>\n'
    horario += '</HORARIO>'
    return horario
 
def escribir_hijos(hijos):
    hijos_xml = ''
    for hijo in hijos:
        nombre = hijo['nombre']
        apellido = hijo['apellido']
        sexo = hijo['sexo']
        hijo_xml = f'<HIJO nombre="{nombre}" apellido="{apellido}" sexo="{sexo}"/>'
        hijos_xml += hijo_xml + '\n'
    return hijos_xml
 
# Función para analizar el XML
def analizar_xml(xml):
    empleados = []
    intervalos = []
    hijos = []
    empleado = {}
    horario = False
 
    for line in xml.splitlines():
        line = line.strip()
        if line.startswith('<EMPLEADO'):
            empleado = {}
            for attribute in line[10:-2].split():
                key, value = attribute.split('=')
                empleado[key] = value.strip('"')
        elif line.startswith('<INTERVALO'):
            intervalo = {}
            for attribute in line[11:-2].split():
                key, value = attribute.split('=')
                intervalo[key] = value.strip('"')
            intervalos.append(intervalo)
        elif line.startswith('<HIJO'):
            hijo = {}
            for attribute in line[6:-2].split():
                key, value = attribute.split('=')
                hijo[key] = value.strip('"')
            hijos.append(hijo)
        elif line == '<HORARIO>':
            horario = True
        elif line == '</HORARIO>':
            horario = False
        elif horario:
            descripcion = line.strip()
            intervalos[-1]['descripcion'] = descripcion
 
        if line == '</EMPLEADO>':
            empleado['horario'] = intervalos
            empleado['hijos'] = hijos
            empleados.append(empleado)
            intervalos = []
            hijos = []
 
    return empleados

Ten en cuenta que este es solo un ejemplo básico para ayudarte a empezar. Debes adaptar y ampliar estas funciones según tus necesidades específicas. Además, te recomendaría considerar la validación y el manejo de errores al implementar las funciones completas.

Recuerda que este código está escrito en Python. Si estás utilizando un lenguaje diferente, tendrás que ajustar la sintaxis y los detalles según tu lenguaje de programación.

Espero que esta ayuda inicial te dé una idea básica de cómo puedes empezar a trabajar con el XML proporcionado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar