1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
/* Ejercicio: 2x4x01 Fecha: 08/10/2012 Enunciado: 1.- Realiza las siguientes tareas, a partir de la clase persona: a) Crea un fichero "FichPersona.dat", que almacene varios objetos persona. b) Tomando como base el fichero anterior, crea un documento XML usando DOM. c) Implementa una clase que permita leer el documento XML del apartado anterior. */ import org.w3c.dom.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import java.io.*; public class _2x4x01 { // a) Crea un fichero "FichPersona.dat", que almacene varios objetos persona. private static void creaFicheroDatosPersonas(String[] args) throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(args[0]), false)); oos.writeObject(new Persona("Pedro", 53)); oos.writeObject(new Persona("Juan", 26)); oos.writeObject(new Persona("Maria", 32)); oos.writeObject(new Persona("Laura", 19)); oos.close(); } // b) Tomando como base el fichero anterior, crea un documento XML usando DOM. private static void creaFicheroXMLPersonas(String[] args) throws IOException { FileInputStream fis = new FileInputStream(new File(args[0])); ObjectInputStream ois = new ObjectInputStream(fis); Persona perso; try { // Crea la cabecera del fichero XML en memoria: Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation().createDocument(null, "personas", null); document.setXmlVersion("1.0"); // Añade los objetos persona al XML: while( fis.available() > 0 ) { perso = (Persona)ois.readObject(); Element raiz = document.createElement("persona"); document.getDocumentElement().appendChild(raiz); crearElemento("nombre", perso.getNombre(), raiz, document); crearElemento("edad", String.valueOf(perso.getEdad()), raiz, document); } // Vuelca el XML a un fichero XML: TransformerFactory.newInstance().newTransformer().transform(new DOMSource(document), new StreamResult(new java.io.File(args[1]))); } catch( Exception e ) { e.printStackTrace(); } ois.close(); fis.close(); } static void crearElemento(String datoEmple, String valor, Element raiz, Document document) { Element elem = document.createElement(datoEmple); Text text = document.createTextNode(valor); raiz.appendChild(elem); elem.appendChild(text); } // c) Implementa una clase que permita leer el documento XML del apartado anterior. public static void imprimirFicheroXMLPersonas(String[] args) { try { Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(args[1])); document.getDocumentElement().normalize(); System.out.println(document.getDocumentElement().getNodeName()); NodeList empleados = document.getElementsByTagName("persona"); for( int i = 0 ; i < empleados.getLength() ; i++ ) { Node emple = empleados.item(i); if( emple.getNodeType() == Node.ELEMENT_NODE ) { Element elemento = (Element)emple; System.out.print(" " + getNodo("nombre", elemento)); System.out.println(" \t" + getNodo("edad", elemento)); } } } catch( Exception e ) { System.err.println("Error: " + e); } } private static String getNodo(String etiqueta, Element elem) { NodeList nodo = elem.getElementsByTagName(etiqueta).item(0).getChildNodes(); Node valorNodo = (Node)nodo.item(0); return valorNodo.getNodeValue(); } public static void main(String[] args) throws IOException { String[] argumentos = { "personas.dat", "personas.xml" }; creaFicheroDatosPersonas(argumentos); creaFicheroXMLPersonas(argumentos); imprimirFicheroXMLPersonas(argumentos); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
/* Ejercicio: 2x4x02 Fecha: 09/10/2012 Enunciado: Utiliza SAX para visualizar el contenido del fichero del apartado b) del ejercicio anterior. */ import java.io.FileNotFoundException; import java.io.IOException; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; public class _2x4x02 { private static void leerXMLConSax(String[] args) throws FileNotFoundException, SAXException, IOException { XMLReader procesadorXML = XMLReaderFactory.createXMLReader(); procesadorXML.setContentHandler(new GestionContenido()); procesadorXML.parse(new InputSource(args[0])); } public static void main(String[] args) throws FileNotFoundException, SAXException, IOException { String[] argumentos = { "personas.xml" }; leerXMLConSax(argumentos); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
/* Ejercicio: 2x4x03 Fecha: 09/10/2012 Enunciado: a) Realiza un programa Java que cree un fichero binario para guardar datos (objetos) de departamentos (departamentos.dat). Los datos para cada departamento son: - Numdepartamento: entero - Nombre: String - Localidad: String Introduce varios departamentos b) A partir del fichero departamentos.dat anterior, crea un fichero XML usando la librería XStream. c) Crea una plantilla XSL para dar una presentación al fichero XML generado en el apartado b) y realiza un programa Java para transformarlo en HTML. */ 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.util.Vector; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import com.thoughtworks.xstream.XStream; public class _2x4x03 { // a) Realiza un programa Java que cree un fichero binario para guardar datos (objetos) de departamentos (departamentos.dat). private static void creaDatosDepartamentos(String[] args) throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(args[0]), false)); oos.writeObject(new Departamento(1, "Administracion", "Huesca")); oos.writeObject(new Departamento(2, "Marketing", "Zaragoza")); oos.writeObject(new Departamento(2, "Ventas", "Teruel")); oos.close(); } // b) A partir del fichero departamentos.dat anterior, crea un fichero XML usando la librería XStream. public static void datToXMLWithXStream(String[] args) throws IOException, ClassNotFoundException { FileInputStream fis = new FileInputStream(new File(args[0])); ObjectInputStream ois = new ObjectInputStream(fis); Vector<Departamento> listaDepartamentos = new Vector<Departamento>(); while( fis.available() > 0 ) listaDepartamentos.add((Departamento)ois.readObject()); ois.close(); fis.close(); try { XStream xstream = new XStream(); xstream.alias("departamentos", Vector.class); xstream.alias("departamento", Departamento.class); xstream.toXML(listaDepartamentos, new FileOutputStream(new File(args[1]))); } catch( Exception e ) { e.printStackTrace(); } } // c) Crea una plantilla XSL para dar una presentación al fichero XML generado en el apartado b) y realiza un programa Java para transformarlo en HTML. public static void XMLAndXSLToHTML(String[] args) throws FileNotFoundException { Source sXML = new StreamSource(new File(args[1])); //XML Source sXSL = new StreamSource(new File(args[2])); // XSL Result rHTML = new StreamResult(new FileOutputStream(new File(args[3]))); //HTML try { Transformer transformer = TransformerFactory.newInstance().newTransformer(sXSL); transformer.transform(sXML, rHTML); } catch( Exception e ) { e.printStackTrace(); } } public static void main(String[] args) throws IOException, ClassNotFoundException { String[] argumentos = { "departamentos.dat", "departamentos.xml", "departamentos.xsl", "departamentos.html" }; //A: creaDatosDepartamentos(argumentos); //B: datToXMLWithXStream(argumentos); //C: XMLAndXSLToHTML(argumentos); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
/* Ejercicio: 2x4x04 Fecha: 09/10/2012 Enunciado: Hacer el ejercicio 1 usando XStreme */ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Iterator; import java.util.Vector; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Text; import com.thoughtworks.xstream.XStream; public class _2x4x04 { // a) Crea un fichero "FichPersona.dat", que almacene varios objetos persona. private static void creaFicheroDatosPersonas(String[] args) throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(args[0]), false)); oos.writeObject(new Persona("Pedro", 53)); oos.writeObject(new Persona("Juan", 26)); oos.writeObject(new Persona("Maria", 32)); oos.writeObject(new Persona("Laura", 19)); oos.close(); } // b) Tomando como base el fichero anterior, crea un documento XML usando XStreme. private static void creaFicheroXMLPersonas(String[] args) throws IOException, ClassNotFoundException { FileInputStream fis = new FileInputStream(new File(args[0])); ObjectInputStream ois = new ObjectInputStream(fis); Vector<Persona> listaDepartamentos = new Vector<Persona>(); while( fis.available() > 0 ) listaDepartamentos.add((Persona)ois.readObject()); ois.close(); fis.close(); try { XStream xstream = new XStream(); xstream.alias("personas", Vector.class); xstream.alias("persona", Persona.class); xstream.toXML(listaDepartamentos, new FileOutputStream(new File(args[1]))); } catch( Exception e ) { e.printStackTrace(); } } static void crearElemento(String datoEmple, String valor, Element raiz, Document document) { Element elem = document.createElement(datoEmple); Text text = document.createTextNode(valor); raiz.appendChild(elem); elem.appendChild(text); } // c) Implementa una clase que permita leer el documento XML del apartado anterior. public static void imprimirFicheroXMLPersonas(String[] args) { XStream xstream = new XStream(); xstream.alias("personas", Vector.class); xstream.alias("persona", Persona.class); Vector<Persona> listaPersonas = (Vector<Persona>)xstream.fromXML(new File(args[1])); System.out.println("Numero de personas: " + listaPersonas.size()); Iterator<Persona> iterator = listaPersonas.listIterator(); while( iterator.hasNext() ) System.out.println(( (Persona)iterator.next() ).toString()); } public static void main(String[] args) throws IOException, ClassNotFoundException { String[] argumentos = { "personas.dat", "personas.xml" }; creaFicheroDatosPersonas(argumentos); creaFicheroXMLPersonas(argumentos); imprimirFicheroXMLPersonas(argumentos); } } |
De donde sacamos la clase persona para el ejercicio con DOM??
En el botón de descarga que hay justo debajo del código.