Browse Source

P11

master
Dani Minguet 2 years ago
commit
4690f33e26
9 changed files with 238 additions and 0 deletions
  1. +10
    -0
      .classpath
  2. +17
    -0
      .project
  3. +2
    -0
      .settings/org.eclipse.core.resources.prefs
  4. +14
    -0
      .settings/org.eclipse.jdt.core.prefs
  5. +28
    -0
      README.md
  6. BIN
      bin/creacionxml/com/daniminguet/es/P11.class
  7. BIN
      bin/creacionxml/com/daniminguet/es/Persona.class
  8. +134
    -0
      src/creacionxml/com/daniminguet/es/P11.java
  9. +33
    -0
      src/creacionxml/com/daniminguet/es/Persona.java

+ 10
- 0
.classpath View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

+ 17
- 0
.project View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>P11-CreacionXML</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>

+ 2
- 0
.settings/org.eclipse.core.resources.prefs View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

+ 14
- 0
.settings/org.eclipse.jdt.core.prefs View File

@ -0,0 +1,14 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=17
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=17

+ 28
- 0
README.md View File

@ -0,0 +1,28 @@
# LEE EL FICHERO CON OBJETOS PERSONA Y LOS GUARDA EN UN FICHERO XML
Para obtener los datos de las personas del primer fichero, he utilizado la misma metodología que en el ejercicio 8.2
Para escribir y crear el fichero XML:
- Mediante "DocumentBuilderFactory", "DocumentBuilder" y "Document"
- Creamos "Element" para crear los objetos y indicamos el objeto mediante el método ".createElement()"
- Mediante el método ".appendChid()" añadimos al fichero
- Mediante "Attr" creamos los atributos del objeto con la ayuda del método ".createAttribute()", después ".setValue()" para cambiar el valor y el nombre del element junto con el método ".setAttributeNode()" para guardarlo en el elemento
- Mediante "TransformerFactory", "Transformer", "DOMSource" y "StreamResult" para crear el fichero XML junto con los datos anteriormente creados
Resultado terminal:
```
El archivo XML de personas se ha creado correctamente!
```
Resultado fichero XML:
```
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Personas>
<Persona edad="18" nombre="Juan"/>
<Persona edad="20" nombre="Pepe"/>
<Persona edad="56" nombre="Manolo"/>
<Persona edad="78" nombre="Erom"/>
</Personas>
```

BIN
bin/creacionxml/com/daniminguet/es/P11.class View File


BIN
bin/creacionxml/com/daniminguet/es/Persona.class View File


+ 134
- 0
src/creacionxml/com/daniminguet/es/P11.java View File

@ -0,0 +1,134 @@
package creacionxml.com.daniminguet.es;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import javax.xml.transform.Result;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
public class P11 {
public static void main(String[] args) throws EOFException {
//Fichero de objetos Persona
File fichero = new File("C:\\Users\\Dani\\OneDrive\\Documentos\\AccesoADatos\\Personas.dat");
//Guardamos los datos de las personas para poder crear el archivo XML
ArrayList<Persona> personas = leerFichero(fichero);
//Comprueba que el archivo XML se ha creado correctamente
if(crearXml(personas)) {
System.out.println("El archivo XML de personas se ha creado correctamente!");
} else {
System.out.println("Error al crear el archivo XML de personas");
}
}
public static boolean crearXml(ArrayList<Persona> personas) {
boolean creadoCorrectamente = false;
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
//Se define el array de personas
Element personasXml = doc.createElement("Personas");
doc.appendChild(personasXml);
for(int i = 0; i < personas.size(); i++) {
//Se definen las personas
Element persona = doc.createElement("Persona");
personasXml.appendChild(persona);
//Se definen los atributos de cada persona, se les asigna el valor adecuado y se añaden al elemento persona
Attr nombre = doc.createAttribute("nombre");
nombre.setValue(personas.get(i).getNombre());
persona.setAttributeNode(nombre);
Attr edad = doc.createAttribute("edad");
edad.setValue(String.valueOf(personas.get(i).getEdad()));
persona.setAttributeNode(edad);
}
//Se escribe el contenido del XML en un archivo
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("C:\\Users\\Dani\\OneDrive\\Documentos\\AccesoADatos\\Personas.xml"));
transformer.transform(source, result);
creadoCorrectamente = true;
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
}
return creadoCorrectamente;
}
public static ArrayList<Persona> leerFichero(File fichero) {
FileInputStream filein = null;
try {
filein = new FileInputStream(fichero);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
ObjectInputStream dataIS = null;
try {
dataIS = new ObjectInputStream(filein);
} catch (IOException ioe) {
}
String[] nombres;
int[] edades;
//Lee los datos del archivo
try {
nombres = (String[]) dataIS.readObject();
edades = (int[]) dataIS.readObject();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
//Se crea la lista que contendrá las personas
ArrayList<Persona> personas = new ArrayList<>();
//Se recorren los datos de las personas y se crean y añaden en la lista
for (int i = 0; i < nombres.length; i++) {
personas.add(new Persona(nombres[i], edades[i]));
}
try {
dataIS.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
return personas;
}
}

+ 33
- 0
src/creacionxml/com/daniminguet/es/Persona.java View File

@ -0,0 +1,33 @@
package creacionxml.com.daniminguet.es;
import java.io.Serializable;
public class Persona implements Serializable{
private String nombre;
private int edad;
public Persona(String nombre, int edad) {
this.nombre = nombre;
this.edad= edad;
}
public Persona() {
this.nombre=null;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
}

Loading…
Cancel
Save