Creación y Persistencia de Datos XML en Java: Ejercicios Prácticos con la Librería XOM
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 8,49 KB
Creación y Manipulación de Documentos XML con Java y XOM
Ejercicio 1: Creación de un Archivo XML Básico
Escriba un programa Java que cree el siguiente archivo XML (mensaje.xml):
<mensajes>
<mensaje>Hola, mundo</mensaje>
</mensajes>Código Java: HolaMundoXML
import nu.xom.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class HolaMundoXML {
public static void main(String[] args) {
// Crear los elementos
Element raiz = new Element("mensajes");
Element mensaje = new Element("mensaje");
// Crear el documento
mensaje.appendChild("Hola, mundo");
raiz.appendChild(mensaje);
Document doc = new Document(raiz);
// Guardar el documento
try {
FileOutputStream f = new FileOutputStream("mensaje.xml");
Serializer serial = new Serializer(f);
serial.setIndent(4); // Opcional: mejora la legibilidad del XML
serial.write(doc);
f.close();
System.out.println("Ok");
} catch (IOException exc) {
System.err.println("ERROR de archivo: " + exc.getMessage());
}
}
}Ejercicio 2: Creación de un Catálogo de Biblioteca Interactivo
Escriba un programa que permita al usuario introducir datos de varios libros (título y autor) y genere un archivo XML llamado biblioteca.xml. El programa debe capturar las excepciones que se puedan producir, mostrando un mensaje informativo.
El archivo XML generado tendrá la siguiente estructura (ejemplo):
<biblioteca>
<libro>
<titulo>La historia interminable</titulo>
<autor>Michael Ende</autor>
</libro>
<libro>
<titulo>Don Quijote</titulo>
<autor>Miguel de Cervantes Saavedra</autor>
</libro>
...
</biblioteca>Código Java: P8_Ejercicio2 (Generación Dinámica)
package p8_ejercicio2;
import java.io.*;
import nu.xom.*;
import java.util.Scanner;
import java.util.InputMismatchException;
public class P8_Ejercicio2 {
public static void main(String[] args) {
Element raiz = new Element("biblioteca");
Scanner teclado = new Scanner(System.in);
System.out.println("¿Cuántos libros quiere almacenar?");
int j = 0;
try {
j = teclado.nextInt();
} catch (InputMismatchException e) {
System.err.println("Entrada inválida. Se asumirá 0 libros.");
}
teclado.nextLine(); // Consumir el salto de línea
for (int i = 0; i < j; i++) {
Element libro = new Element("libro");
Element autor = new Element("autor");
Element titulo = new Element("titulo");
System.out.println("--- Libro " + (i + 1) + " ---");
System.out.println("Inserte título:");
String t = teclado.nextLine();
titulo.appendChild(t);
libro.appendChild(titulo);
System.out.println("Inserte autor:");
String a = teclado.nextLine();
autor.appendChild(a);
libro.appendChild(autor);
raiz.appendChild(libro);
}
Document doc = new Document(raiz);
// Serialización y guardado del documento
try {
FileOutputStream f = new FileOutputStream("biblioteca.xml");
Serializer serial = new Serializer(f);
serial.setIndent(4);
serial.write(doc);
f.close();
System.out.println("Ok");
} catch (IOException exc) {
System.err.println("ERROR de archivo: " + exc.getMessage());
}
}
}Ejercicio 3: Lectura y Visualización de Documentos XML
Escriba un programa que tome el archivo biblioteca.xml creado en el punto anterior y lo vuelque por pantalla. Captura las excepciones de parseo y de entrada/salida que se puedan producir, mostrando un mensaje informativo.
Código Java: Ejercicio3 (Lectura de XML)
package ejercicio3;
import java.io.*;
import nu.xom.*;
public class Ejercicio3 {
// Definición de constantes para las etiquetas
public static final String ETQ_BIBLIOTECA = "biblioteca";
public static final String ETQ_LIBRO = "libro";
public static final String ETQ_TITULO = "titulo";
public static final String ETQ_AUTOR = "autor";
public static final String FICHERO = "biblioteca.xml";
public static void main(String[] args) {
Builder parser = new Builder();
try {
// 1. Construir el documento a partir del archivo
Document doc = parser.build(new File(FICHERO));
// 2. Obtener los elementos hijos del elemento raíz (los libros)
Elements elementos = doc.getRootElement().getChildElements();
System.out.println("Contenido del archivo: " + FICHERO);
// 3. Iterar sobre los libros y mostrar sus datos
for (int i = 0; i < elementos.size(); i++) {
Element unLibro = elementos.get(i);
System.out.println("-------------------------");
// Se asume que el elemento es un libro
String titulo = unLibro.getFirstChildElement(ETQ_TITULO).getValue().trim();
String autor = unLibro.getFirstChildElement(ETQ_AUTOR).getValue().trim();
System.out.println("Título: " + titulo);
System.out.println("Autor: " + autor);
}
System.out.println("-------------------------");
// 4. Mostrar el XML completo usando la función toXML() de la librería XOM
System.out.println("\nProbando toXML() de la librería:");
System.out.println(doc.toXML());
} catch (ParsingException e) {
System.err.println("ERROR de parseo XML: El archivo no es válido o está mal formado.");
System.err.println("Detalles: " + e.getMessage());
} catch (IOException e) {
System.err.println("ERROR de archivo: No se pudo leer el archivo " + FICHERO + ".");
System.err.println("Detalles: " + e.getMessage());
}
}
}Diseño Orientado a Objetos para Gestión XML
Ejercicio 4: Implementación de Clases Libro y Biblioteca
Cree un programa de gestión de biblioteca, a partir de lo realizado en los dos ejercicios anteriores, que almacene datos de libros: concretamente el título, autor y año de publicación. El programa debe contener las clases Libro y Biblioteca.
Requisitos de la Clase Libro
- Debe ofrecer el método
toElement(), que devuelve la información del libro como un nodo XMLElement(utilizando XOM). - Debe tener un constructor que cree el objeto
Libroa partir de un objetoElementXML.
Requisitos de la Clase Biblioteca
- Debe contener un constructor al que se le pase una cadena (nombre de archivo) y lea todos los datos desde el archivo XML de ese nombre.
- Debe contener el método
toXML(String nombreArchivo), que guarda la información contenida en la colección de libros a un archivo XML.
Ejercicio 5: Diseño de un Sistema de Gestión de Vehículos (Herencia y XML)
Cree un programa para gestionar los datos de los vehículos de una empresa de transporte. Este ejercicio requiere aplicar principios de herencia para modelar los diferentes tipos de vehículos y su posterior persistencia en XML.
Requisitos del Modelo de Datos
La empresa gestiona dos tipos de vehículos: Taxis y Autobuses.
Atributos Comunes (Clase Base Vehiculo):
- Matrícula
- Marca
- Modelo
Atributos Específicos:
- Taxi: Número de licencia.
- Autobús: Número de plazas.
El programa debe ser capaz de almacenar y recuperar esta información utilizando archivos XML, aplicando técnicas de serialización similares a las desarrolladas en los ejercicios de la Biblioteca.