From 4690f33e269b7d064745ff29e382bc8f3b347f7f Mon Sep 17 00:00:00 2001 From: Dani Minguet Date: Mon, 24 Oct 2022 21:07:59 +0200 Subject: [PATCH] P11 --- .classpath | 10 ++ .project | 17 +++ .settings/org.eclipse.core.resources.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 14 ++ README.md | 28 ++++ bin/creacionxml/com/daniminguet/es/P11.class | Bin 0 -> 5343 bytes .../com/daniminguet/es/Persona.class | Bin 0 -> 932 bytes src/creacionxml/com/daniminguet/es/P11.java | 134 ++++++++++++++++++ .../com/daniminguet/es/Persona.java | 33 +++++ 9 files changed, 238 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 README.md create mode 100644 bin/creacionxml/com/daniminguet/es/P11.class create mode 100644 bin/creacionxml/com/daniminguet/es/Persona.class create mode 100644 src/creacionxml/com/daniminguet/es/P11.java create mode 100644 src/creacionxml/com/daniminguet/es/Persona.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..57bca72 --- /dev/null +++ b/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..c2743f6 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + P11-CreacionXML + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8c9943d --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..d3f4d6f --- /dev/null +++ b/README.md @@ -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: + +``` + + + + + + + +``` \ No newline at end of file diff --git a/bin/creacionxml/com/daniminguet/es/P11.class b/bin/creacionxml/com/daniminguet/es/P11.class new file mode 100644 index 0000000000000000000000000000000000000000..40cc7c5bff1edadaf795f73eca0f47ef64d923cd GIT binary patch literal 5343 zcmbtYd3aP;75}}-WZul=u{V?f+78e{5|)8hD^4gBLV#!%N+1vj(wCW+9| zs@<&E7PVE|O6yj-n5w94)r2%kajCXds#YzyQfK-3Ia<^%XF72sHmy!P~dN{lSUX72x+K9K*6|X(=uAK>2AYW zuXm>m1rwX?gr4fq9aH?yZTj6lGo#?*=5uROPbq2Lv=mIP+0s0!QM>C<<9eY*xN%p) z=yz#QM#V%0=SeEljy1NeDjcaePl1*{S!Je-ASNrQZ-{qo$QVwhYbBk~)n*wh9dn1# zwbD*x(}v~RnXcuDgpskAuhhklwIsDIJ+mOGyJ1Yi6k&KoL3K?z-NH~XO~Z6tpr9&c z7|tp)(Pucef=hDr)KchDU+Z1Zx@Ic2+;Q~X&1S}}7xypH5XB4yLE$TBQ#z$!O78M$ z)U}&Kn1xGJTwD^n_T3rRNNbplIgFc~Wf-eHX%xPeUUcb8Lr>QSQLEtc##B^y5`E?l zJG!Z*Ihr)0{W+VX86(=KM};0qJDRW^hnUcXmy8)<%*A{a^At?V`?!d;h6Tb&YQK<{ zvVvHsptjL*Y$vLxBts`^{7<<=fbR4XFO$jufLwd>P90k?OZt>P%d1{6`81aiRi*gc z-Ji$kvT_kwa!$m0zN%kJ+>U8?^~5zTdcQ=y3T}DMDOEy2sNL+fbT{iTUsjZj?HiC= zyE%+ySgztq1vMfTyJ8~G`*laaJeCLcimaJR5|DbrwVmA>R-l0xwTzujR>sw>1XY<= zeYUjVj(j02LGFgavUmE3;*% zyB$Nw?beV0C5`j6U+%J0c4u8il(J=Z%9@_9pe3>eF@q3CkA`0Kv0(HXqF~fCC|(vSu#d5An)rMh%~4i;XY$>~&uemE+wWgRQFS16|;BT7jy zW4Il9Doca6BCBBsc9NKz1#5*D&+xW1uhiReD~R2!GDcEQ3O%pW@J_so?x&uO+>`CD zDU2I%lZqQli>quy8g9nBNxwsA)Yfx`zj9^?zrIJqUcuX+G54@_-iq5*+(tb|(e66B zmFcmabZmWoRg$Os6x5aE(%CLBmbc>l8a{wK6pUqF7V%Ut>)d=8|7!{na&1+?iZm_K$vp4JL;zd( zmn+vSoB8G~-#pbNkjj@?YHjj=6LT*|Enl2P3}t$Av*43LF41L0Y8KARWF2*_Dx4b* z)8Skfc_WaKc~R<&0vE40<&#H{I}-QoF=cs|NfF_}e$l5F7Tw6l>1+9NUurmk z7a1Bo$%a!hPvjVjm)%kPTEk1C5>zHqcE(Wg8wD5S%@fbwR@+@=XRTzxO)7qye|QSZ z+KLW-ryx4&--eW)$((VW(Ci^wF@Z%q<j!k+~JEx)o=@}s* znd&`e_~Z|Wo@{V2I5-4lQp0iNaoO7VZ&mz(tE>@x=_#-5iVoKUW-J`Kj_( zjNb~sE9-_3e2fbp!u%A+;DlAhPt7CX_Za>PVJyaxYCPA1)db1rAu<>2>qaoCb7J)n z&TpQ32vb|;9m0k8V(jCXIk9FCbpxmp%NUnJmS4)cP;!{fbqzV!VKV2d3o(x>&qpm5 zN*$secPzrCycgz}cp2VA>EkdBZ^q@+=Ple9ntD5nx${=J<9iJ=R7_G4SE)P4OP(y@ ziI0CHpaXn8bcV3_WW|z0SlTjg5Gz~f4`NN+AMsCY9mZN8;*}A9q;eP?K5VSGJTL%@ zN1MGPHBuQ-htb6&Zf+ZfPWoUZSXUhwgmDDsAg&pP?L$P31c%{zbh|vdP$X1Dx91S9 z&y$8c(pv&bb)aq#w;VWi$058o9*B_Z`{L>d?(B^Chw!0za0GXEN~eE>P9MU(@sN-d z2@T?7{v`t#FD!as073CRFzq1i_A$GUu{VqF6YQy86fAlY^s0~E4A7fZSj^bgbD&?s zae67^aV2+`^IrpJk(JnnMkf0zxLA$bu?BaM=6;?$j20Y3D~8a9XRsE}V;$wR<2c8R z6WD+k(SeuIDWm#;MA1nZK@pLc@fm!UF$~~2^7tHgs>tK>_yVIp0pGx*c#PUk$00n9 zFEVbm*oiOU%TnL1804Nx4c6dlN)J-AD0XudqE0d187AF9V(bZwkZuSU;4Anl>7JpK z!+4T($I1N&zDBt(a`kme9K{t8LOmDLM*>$1QF)3kQ3)$W#WEF5Dy~wom09y|Y(K>T z(I<|;!v|NZc*IZc{L={edD#1=#NHfgB$9By(maBvI+=psZXUpxmJvMNId2HhKB;hd zv~%tdzSlAUe=9@y{1Lp6`#u);4`5onQcy=K1$ps$1o6%x{3Ko}5j#CXGP84jb>Py7 zzdEpB2tOUfFE&bi%|CqL)JtUjs{xFQ2PC(E;1;QTls*T}<# z@d~Gby||6PJrs4In)Ynvt!=z_HM3F26pm<9VeozrZ(EFoO&_IoK!!CZ`%mHLCZp1#^#K-L|)X3 zwcszT6&2*%m|HF8ufNI|i#>031#|yZ{Ec=t$<^Pv>SByUO{t^}vvT;_m!lJz;nf+B zYB8w<9=4+D6y3z2v(h{z!v1pT6!op}HdHn@=E%lj28ae*`*3n7iEEt?dsT{s6@+9f0DCM36!IFIZJqH zjW@JOnsD?Bfufqrxqvt$@I*&CJr(Ey(hy z2C{!k78AwgnAbKsGcdeMPWCPiY*ud)uaiK%(PoFWeEZMM264ok1%69#_+fDVjgE=U zv&?=KHP*X)ePF-9voZRP`smp;_C^QSXn(bYebyF=tQA&|wTe2aU3U5z4fk-LFAlIW z!rqLKV`ZAT%!z#io|O@l*(lWQq&gKERA}1i#val6bb$wWm{0O~n%_#JZ`k|7ivwfR zqypMo 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 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 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 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; + } +} diff --git a/src/creacionxml/com/daniminguet/es/Persona.java b/src/creacionxml/com/daniminguet/es/Persona.java new file mode 100644 index 0000000..2b60817 --- /dev/null +++ b/src/creacionxml/com/daniminguet/es/Persona.java @@ -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; + } +}