@ -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(); | |||||
} | |||||
} |