Skip to content

Commit 65514bd

Browse files
authored
Merge pull request mouredev#5202 from Andreavzqz/patch-15
#12 - C#
2 parents eaab11f + 6a6a8ba commit 65514bd

File tree

1 file changed

+157
-0
lines changed

1 file changed

+157
-0
lines changed
+157
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Xml.Linq;
5+
using Newtonsoft.Json;
6+
7+
namespace ArchivosXmlJson
8+
{
9+
class Program
10+
{
11+
public class Persona
12+
{
13+
public string Nombre { get; set; }
14+
public int Edad { get; set; }
15+
public DateTime FechaNacimiento { get; set; }
16+
public List<string> LenguajesProgramacion { get; set; }
17+
}
18+
19+
static void Main(string[] args)
20+
{
21+
// Datos a guardar
22+
Persona persona = new Persona
23+
{
24+
Nombre = "Andrea",
25+
Edad = 30,
26+
FechaNacimiento = new DateTime(1994, 5, 13),
27+
LenguajesProgramacion = new List<string> {"C#", "JavaScript", "Python" }
28+
};
29+
30+
//Archivos
31+
string xmlFileName = "persona.xml";
32+
string jsonFileName = "persona.json";
33+
34+
try
35+
{
36+
// Crear y guardar XML
37+
XElement personaXml = new XElement("Persona",
38+
new XElement("Nombre", persona.Nombre),
39+
new XElement("Edad", persona.Edad),
40+
new XElement("FechaNacimiento", persona.FechaNacimiento.ToString("dd-MM-yyy")),
41+
new XElement("LenguajeProgramacion",
42+
new XElement("Lenguaje", persona.LenguajesProgramacion[0]),
43+
new XElement("Lenguaje", persona.LenguajesProgramacion[1]),
44+
new XElement("Lenguaje", persona.LenguajesProgramacion[2])
45+
)
46+
);
47+
48+
personaXml.Save(xmlFileName);
49+
50+
//Crear y guardar JSON
51+
string personaJson = JsonConvert.SerializeObject(persona, Formatting.Indented);
52+
File.WriteAllText(jsonFileName, perosnaJson);
53+
54+
//Mostrar contenido de los archivos
55+
Console.WriteLine("Contenido del archivo XML:");
56+
Console.WriteLine(File.ReadAllText(jsonFileName));
57+
58+
Console.WriteLine("\nContenido del archivo JSON:");
59+
Console.WriteLine(File.ReadAllText(jsonFileName));
60+
61+
//Dificultad extra: Leer y transformar en clase personalizada
62+
Persona personaDesdeXml = LeerDesdeXml(xmlFileName);
63+
Persona personaDesdeJson = LeerDesdeJson(jsonFileName);
64+
65+
//Mostrar datos de la clase personalizada
66+
Console.WriteLine("\nDatos leídos desde XML:");
67+
MostrarDatos(personaDesdeXml);
68+
69+
Console.WriteLine("\nDatos leídos desde JSON:");
70+
MostrarDatos(personaDesdeJson);
71+
}
72+
finally
73+
{
74+
// Borrar archivos
75+
if (File.Exists(xmlFileName))
76+
{
77+
File.Delete(xmlFileName);
78+
}
79+
80+
if (File.Exists(jsonFileName));
81+
{
82+
File.Delete(jsonFileName);
83+
}
84+
85+
Console.WriteLine("\Archivos eliminados.");
86+
}
87+
}
88+
89+
static Persona LeerDesdeXml(string fileName)
90+
{
91+
XElement personaXml = XElement.Load(fileName);
92+
Persona persona = new Persona
93+
{
94+
Nombre = personaXml.Element("Nombre")?.Value,
95+
Edad = int.Parse(personaXml.Element("Edad")?.Value),
96+
FechaNacimiento = DateTime.Parse(personaXml.Element("FechaNacimiento")?.Value),
97+
LenguajesProgramacion = new List<string>()
98+
};
99+
100+
foreach(XElement lenguaje in personaXml.Element("LenguajesProgramacion").Element("Lenguaje"))
101+
{
102+
persona.LenguajesProgramacion.Add(lenguaje.Value);
103+
}
104+
105+
return persona;
106+
}
107+
108+
static Persona LeerDesdeJson(string fileName)
109+
{
110+
string personaJson = File.ReadAllText(fileName);
111+
return JsonCovert.DeserializeObject<Persona>(personaJson);
112+
}
113+
114+
static void MostrarDatos(Persona persona)
115+
{
116+
Console.WriteLine($"Nombre: {persona.Nombre}");
117+
Console.WriteLine($"Edad: {persona.Edad}");
118+
Console.WriteLine($"Fecha de nacimiento: {persona.FechaNacimiento:dd-MM-yyyy}");
119+
Console.WriteLine($"Lenguajes de programacion: "+ string.Join(",", persona.LenguajesProgramacion));
120+
}
121+
}
122+
123+
/*
124+
125+
126+
127+
- Explicación
128+
Clase Persona:
129+
Representa la estructura de los datos que queremos almacenar, con propiedades para nombre, edad, fecha de nacimiento y un listado de lenguajes de programación.
130+
131+
-Main:
132+
Creación de XML:
133+
Se crea un objeto XElement que representa la estructura XML de Persona y se guarda en el archivo persona.xml.
134+
135+
Creación de JSON:
136+
Se convierte el objeto persona a JSON usando JsonConvert.SerializeObject y se guarda en persona.json.
137+
138+
Mostrar contenido de los archivos:
139+
Se leen y muestran los contenidos de los archivos XML y JSON creados.
140+
141+
Leer desde XML y JSON:
142+
Se implementan métodos para leer desde XML (LeerDesdeXml) y JSON (LeerDesdeJson) y transformar los datos en instancias de la clase Persona.
143+
144+
Mostrar datos de la clase personalizada:
145+
Se imprimen los datos de las instancias de Persona obtenidas desde XML y JSON.
146+
147+
Borrar archivos:
148+
Se eliminan los archivos XML y JSON al final.
149+
150+
-Métodos Auxiliares:
151+
152+
LeerDesdeXml: Carga y deserializa los datos desde un archivo XML en un objeto Persona.
153+
LeerDesdeJson: Carga y deserializa los datos desde un archivo JSON en un objeto Persona.
154+
MostrarDatos: Muestra los datos de una instancia de Persona.
155+
156+
*/
157+
}

0 commit comments

Comments
 (0)