diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..b74365b --- /dev/null +++ b/Readme.md @@ -0,0 +1,23 @@ + +## Título +Actividad 11 - Guardando varios objetos en un archivo .xml + +## Uso +Leyendo clase que extienden de Serializable para despues escribir los datos a un fichero xml creando un DOM. + +## Resultado +``` + + + + + + +``` +## Dependencias +- java.io.* +- org.w3c.dom.* +- javax.xml.* + +## Licencia +Uso libre diff --git a/people.xml b/people.xml new file mode 100644 index 0000000..2d2683c --- /dev/null +++ b/people.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/person.bin b/person.bin index bc6467e..6704fd4 100644 Binary files a/person.bin and b/person.bin differ diff --git a/src/Main.java b/src/Main.java index dd371a2..57b2179 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,10 +1,11 @@ - +import controller.CreateXml; import controller.ObjReader; import controller.ObjWriter; import model.People; import model.Person; import java.io.File; +import java.util.ArrayList; public class Main { public static void main(String[] args) { @@ -12,21 +13,22 @@ public class Main { //Create list People data = new People(); + //Init list data.add(new Person("Manolo", 32)); data.add(new Person("Jorge", 2)); data.add(new Person("Pepe", 89)); - //Check writing - boolean isWritten = ObjWriter.write(data,file); - - //Test serialization - People p; - if (isWritten) { - p = (People) ObjReader.read(file); - System.out.println(p.toString()); - } + //Write data + ObjWriter.write(data,file); + //Read data + People p = (People) ObjReader.read(file); + System.out.println(p.toString()); + ArrayList peopleList = p.getData(); + //Create xml from data + CreateXml c = new CreateXml(); + c.create(peopleList, new File("people.xml")); } } diff --git a/src/controller/CreateXml.java b/src/controller/CreateXml.java new file mode 100644 index 0000000..3ff1196 --- /dev/null +++ b/src/controller/CreateXml.java @@ -0,0 +1,55 @@ +package controller; + +import model.Person; +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.ArrayList; + +public class CreateXml { + + public void create(ArrayList data, File fileOut){ + try { + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); + + //root elements + Document doc = docBuilder.newDocument(); + + Element rootElement = doc.createElement("people"); + doc.appendChild(rootElement); + + for (Person p : data) { + Element person = doc.createElement("person"); + rootElement.appendChild(person); + + //set attribute to element + person.setAttribute("id", p.getId()); + person.setAttribute("name", p.getName()); + person.setAttribute("age", p.getAge()); + } + + //write the content into xml file + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(doc); + + StreamResult result = new StreamResult(fileOut); + transformer.transform(source, result); + + System.out.println("Done!"); + + }catch(ParserConfigurationException | TransformerException pce){ + pce.printStackTrace(); + } + } +} diff --git a/src/model/Person.java b/src/model/Person.java index 0829ae4..77d7d53 100644 --- a/src/model/Person.java +++ b/src/model/Person.java @@ -9,25 +9,19 @@ public class Person implements Serializable { private int age; public Person(String name, int age) { - id = ++CONT; + id = ++CONT ; this.name = name; this.age = age; } + public String getId() { + return ""+id; + } public String getName() { return name; } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; + public String getAge() { + return ""+age; } @Override