| @ -0,0 +1,6 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <classpath> | |||||
| <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> | |||||
| <classpathentry kind="src" path="src"/> | |||||
| <classpathentry kind="output" path="out/production/Ejercicio11"/> | |||||
| </classpath> | |||||
| @ -0,0 +1,8 @@ | |||||
| # Default ignored files | |||||
| /shelf/ | |||||
| /workspace.xml | |||||
| # Editor-based HTTP Client requests | |||||
| /httpRequests/ | |||||
| # Datasource local storage ignored files | |||||
| /dataSources/ | |||||
| /dataSources.local.xml | |||||
| @ -0,0 +1,6 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <project version="4"> | |||||
| <component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="corretto-18" project-jdk-type="JavaSDK"> | |||||
| <output url="file://$PROJECT_DIR$/out" /> | |||||
| </component> | |||||
| </project> | |||||
| @ -0,0 +1,8 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <project version="4"> | |||||
| <component name="ProjectModuleManager"> | |||||
| <modules> | |||||
| <module fileurl="file://$PROJECT_DIR$/Ejercicio11.iml" filepath="$PROJECT_DIR$/Ejercicio11.iml" /> | |||||
| </modules> | |||||
| </component> | |||||
| </project> | |||||
| @ -0,0 +1,17 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <projectDescription> | |||||
| <name>Ejercicio11</name> | |||||
| <comment></comment> | |||||
| <projects> | |||||
| </projects> | |||||
| <buildSpec> | |||||
| <buildCommand> | |||||
| <name>org.eclipse.jdt.core.javabuilder</name> | |||||
| <arguments> | |||||
| </arguments> | |||||
| </buildCommand> | |||||
| </buildSpec> | |||||
| <natures> | |||||
| <nature>org.eclipse.jdt.core.javanature</nature> | |||||
| </natures> | |||||
| </projectDescription> | |||||
| @ -0,0 +1,11 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <module type="JAVA_MODULE" version="4"> | |||||
| <component name="NewModuleRootManager" inherit-compiler-output="true"> | |||||
| <exclude-output /> | |||||
| <content url="file://$MODULE_DIR$"> | |||||
| <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> | |||||
| </content> | |||||
| <orderEntry type="inheritedJdk" /> | |||||
| <orderEntry type="sourceFolder" forTests="false" /> | |||||
| </component> | |||||
| </module> | |||||
| @ -0,0 +1,18 @@ | |||||
| <h2>EJERCICIO 11 </h2> | |||||
| <p>El ejercicio consiste en guardar objetos almacenados en un fichero .bin y trasladarlos o trasformarlos en un fichero xml</p> | |||||
| <p>En mi caso creo una clase donde gestiona los tres basicos componentes para manipular el fichero.</p> | |||||
| <ul> | |||||
| <li> <strong>lecturaFichero</strong></li> | |||||
| <li> <strong>escrituraFichero</strong></li> | |||||
| <li><strong>crearFichero</strong></li> | |||||
| </ul> | |||||
| <p>Resultado</p> | |||||
| ```java | |||||
| [Persona{id=1, nombre='Michael', edad=21} | |||||
| , Persona{id=2, nombre='Jhoan', edad=19} | |||||
| , Persona{id=3, nombre='Ricardo', edad=18} | |||||
| ] | |||||
| ``` | |||||
| @ -0,0 +1 @@ | |||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?><people><person edad="18" id="3" nombre="Ricardo"/></people> | |||||
| @ -0,0 +1,96 @@ | |||||
| package Controlador; | |||||
| import Modulo.Persona; | |||||
| import Modulo.Personas; | |||||
| import org.w3c.dom.Document; | |||||
| import org.w3c.dom.Element; | |||||
| import javax.xml.parsers.DocumentBuilder; | |||||
| import javax.xml.parsers.DocumentBuilderFactory; | |||||
| import javax.xml.parsers.ParserConfigurationException; | |||||
| import javax.xml.transform.Transformer; | |||||
| import javax.xml.transform.TransformerException; | |||||
| import javax.xml.transform.TransformerFactory; | |||||
| import javax.xml.transform.dom.DOMSource; | |||||
| import javax.xml.transform.stream.StreamResult; | |||||
| import java.io.*; | |||||
| import java.util.List; | |||||
| public class FuncionesXML { | |||||
| private final File fichero; | |||||
| private final Personas personas; | |||||
| public FuncionesXML(Personas personas, File fichero) { | |||||
| this.personas = personas; | |||||
| this.fichero = fichero; | |||||
| } | |||||
| public void crearXML(List<Persona> listadoPersonas, File nombreFicheroNuevo){ | |||||
| try { | |||||
| DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); | |||||
| DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); | |||||
| //root elements | |||||
| Document doc = docBuilder.newDocument(); | |||||
| Element rootElement = doc.createElement("people"); | |||||
| doc.appendChild(rootElement); | |||||
| Element persona = doc.createElement("person"); | |||||
| for (Persona p : listadoPersonas) { | |||||
| rootElement.appendChild(persona); | |||||
| //set attribute to element | |||||
| persona.setAttribute("id", String.valueOf(p.getId())); | |||||
| persona.setAttribute("nombre", p.getNombre()); | |||||
| persona.setAttribute("edad", String.valueOf(p.getEdad())); | |||||
| } | |||||
| //write the content into xml file | |||||
| TransformerFactory transformerFactory = TransformerFactory.newInstance(); | |||||
| Transformer transformer = transformerFactory.newTransformer(); | |||||
| DOMSource source = new DOMSource(doc); | |||||
| StreamResult result = new StreamResult(nombreFicheroNuevo); | |||||
| transformer.transform(source, result); | |||||
| System.out.println("Done!"); | |||||
| }catch(ParserConfigurationException | TransformerException pce){ | |||||
| pce.printStackTrace(); | |||||
| } | |||||
| } | |||||
| public Object lecturaFichero() { | |||||
| Object object = null; | |||||
| try (FileInputStream fileInputStream = new FileInputStream(fichero); | |||||
| ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream)){ | |||||
| object = objectInputStream.readObject(); | |||||
| } catch(IOException e){ | |||||
| e.printStackTrace(); | |||||
| } catch (ClassNotFoundException e) { | |||||
| throw new RuntimeException(e); | |||||
| } | |||||
| return object; | |||||
| } | |||||
| public boolean escribirFichero(Object obj){ | |||||
| try (FileOutputStream fileOutputStream = new FileOutputStream(fichero); | |||||
| ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream) | |||||
| ){ | |||||
| objectOutputStream.writeObject(obj); | |||||
| objectOutputStream.flush(); | |||||
| return true; | |||||
| } catch (IOException e) { | |||||
| throw new RuntimeException(e); | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,37 @@ | |||||
| import Controlador.FuncionesXML; | |||||
| import Modulo.Persona; | |||||
| import Modulo.Personas; | |||||
| import java.io.*; | |||||
| import java.util.List; | |||||
| public class Main { | |||||
| private static Personas datos; | |||||
| private static File fichero; | |||||
| public static void main(String[] args) { | |||||
| cargarDatos(); | |||||
| FuncionesXML funcionesXML = new FuncionesXML(datos, fichero); | |||||
| if (funcionesXML.escribirFichero(datos)){ | |||||
| Personas personas = (Personas) funcionesXML.lecturaFichero(); | |||||
| System.out.println(personas.toString()); | |||||
| List<Persona> listadoPersonas = personas.getPersonas(); | |||||
| funcionesXML.crearXML(listadoPersonas,new File("personas.xml")); | |||||
| }else{ | |||||
| System.out.println("Error"); | |||||
| } | |||||
| } | |||||
| public static void cargarDatos(){ | |||||
| fichero = new File("persona.bin"); | |||||
| datos = new Personas(); | |||||
| datos.add(new Persona("Michael", 21)); | |||||
| datos.add(new Persona("Jhoan", 19)); | |||||
| datos.add(new Persona("Ricardo", 18)); | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,38 @@ | |||||
| package Modulo; | |||||
| import java.io.Serializable; | |||||
| public class Persona implements Serializable { | |||||
| private static int contador = 0; | |||||
| private final int id; | |||||
| private final String nombre; | |||||
| private final int edad; | |||||
| public Persona(String nombre, int edad) { | |||||
| this.id = ++contador; | |||||
| this.nombre = nombre; | |||||
| this.edad = edad; | |||||
| } | |||||
| public int getId() { | |||||
| return id; | |||||
| } | |||||
| public String getNombre() { | |||||
| return nombre; | |||||
| } | |||||
| public int getEdad() { | |||||
| return edad; | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| return "Persona{" + | |||||
| "id=" + id + | |||||
| ", nombre='" + nombre + '\'' + | |||||
| ", edad=" + edad + | |||||
| '}' + "\n"; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,34 @@ | |||||
| package Modulo; | |||||
| import java.io.Serial; | |||||
| import java.io.Serializable; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| public class Personas implements Serializable { | |||||
| @Serial | |||||
| private static final long serialVersionUID = 1L; | |||||
| private final List<Persona> personas; | |||||
| public Personas() { | |||||
| personas = new ArrayList<>(); | |||||
| } | |||||
| public void add(Persona persona){ | |||||
| personas.add(persona); | |||||
| } | |||||
| public List<Persona> getPersonas() { | |||||
| return personas; | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| return personas.toString(); | |||||
| } | |||||
| } | |||||