CODE: // We create the context indicating the root class in this case Universidad.java
JAXBContext context = JAXBContext.newInstance(Universidad.class);
//Creamos el Marshaller, convierte el java bean en una cadena XML
Marshaller m = context.createMarshaller();
//Limpiamos el xml si existe para imprimirlo correctamente
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
// Lo visualizamos con system out
//m.marshal(miUniversidad, System.out);
// Escribimos en el archivo
m.marshal(miUniversidad, new File("c:\temporal\universidad.xml"));
// Visualizamos ahora los datos del documento UNIVERSIDAD.XML creado
System.out.println("------------ Leo el XML ---------");
//Se crea Unmarshaller en el cotexto de la clase Libreria
Unmarshaller unmars = context.createUnmarshaller();
//Utilizamos el método unmarshal, para obtener datos de un Reader
Universidad miUniversidad2 = (Universidad) unmars.unmarshal(new FileReader("c:\temporal\universidad.xml"));
//Recuperamos el array list y visualizamos
ArrayList<Departamento> listaUniversidad = miUniversidad2.getlistaDepartamento();
//recorremos el arraylist
for (Departamento dep : listaUniversidad) {
System.out.println("Nombre del departamento: "+ dep.getNombre());
System.out.println("Edificio del departamento: "+ dep.getEdificio());
System.out.println("Profesores del departamento: ");
ArrayList<Profesor> listaprofesores = dep.getprofesores();
for (Profesor profe : listaprofesores) {
System.out.println("\tNombre profesor: " + profe.getNombrep() + " , Especialidad: " + profe.getEspecialidad());
}
}
SAMPLE IN CONSOLE: ------------ I read the XML ---------
Exception in thread "main" java.lang.NullPointerException at com.sun.xml.bind.v2.runtime.reflect.Lister $ CollectionLister.addToPack (Lister.java:304) at com.sun.xml.bind.v2.runtime.reflect.Lister $ CollectionLister.addToPack (Lister.java:268) at com.sun.xml.bind.v2.runtime.unmarshaller.Scope.add (Scope.java:121) at com.sun.xml.bind.v2.runtime.property.ArrayERProperty $ ReceiverImpl.receive (ArrayERProperty.java:213) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.endElement (UnmarshallingContext.java:614) at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.endElement (SAXConnector.java:180) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement (Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement (Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next (Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next (Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next (Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument (Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse (Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse (Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse (Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse (Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $ JAXPSAXParser.parse (Unknown Source) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0 (UnmarshallerImpl.java:258) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal (UnmarshallerImpl.java:229) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal (Unknown Source) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal (Unknown Source) at FicheroUniversidad.main (FileUniversidad.java:101)