Ir al contenido principal

Procesando XML en Java [Xerces] - II

Veamos con más profundidad cómo funciona el segundo paso (Crear un objeto Document que contendrá el documento XML):

01public void generaDocumentoXML() {
02 try {
03 // 1. Crear objeto DocumentBuilderFactory
04 DocumentBuilderFactory dbFactory = DocumentBuilderFactoryImpl.newInstance();
05 // 2. A partir del objeto DocumentBuilderFactory crear un objeto DocumentBuilder
06 DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
07 // 3. Generar el documento XML
08 documentoXML = docBuilder.newDocument();
09 } catch (Exception e) {
10 System.out.println("Error : " + e);
11 }
12 // 4. Crear el elemento "descargas"
13 descarga = documentoXML.createElement(TAG_DESCARGAS);
14 // 5. Agregar al documento principal
15 documentoXML.appendChild(descarga);
16}
  1. Creamos un objeto DocumentBuilderFactory, utilizando la el método newInstance() de la claseDocumentBuilderFactoryImpl.
  2. Creamos un objeto DocumentBuilder, con el que crearemos el objeto Document
  3. Generamos el documento usando el método newDocument() de DocumentBuilder
  4. Se crea el elemento raíz del documento XML y,
  5. Se añade dicho elemento al objeto Document

Después de esto, ya tenemos listo nuestro objeto Document en donde crearemos el documento XML. El paso siguiente será alimentar el documento XML con la información de nuestros objetos, lo cual se hace en el método generarDocumentoXMLDescarga:

01public void generarDocumentoXMLDescarga(Descargas descargas)
02{
03 Element elemento;
04 Element item;
05 // 1. Crear elemento
06 elemento = documentoXML.createElement(TAG_DESCARGA);
07 // 2. Asignar un atributo
08 elemento.setAttribute(TAG_ID, ""+descargas.getID());
09 // 3. Aniadir elemento al documento
10 descarga.appendChild(elemento);
11 // a. Crear item
12 item = documentoXML.createElement(TAG_TITULO);
13 // b. Asignar un dato al item
14 item.appendChild(documentoXML.createTextNode(descargas.getTitulo()));
15 // c. Aniadir el item
16 elemento.appendChild(item);
17 // todos los items se crean sigiuendo el patron a, b, c
18 // el código fuente completo se encuentra
19 //disponible para su descarga al final de este artículo
20}
  1. Se crea un elemento ()
  2. Se asigna un atributo al elemento ()
  3. Se añade el elemento al documento XML; posteriormente tenemos la creación de items, para dichoelemento:
    a. Se crea el item ()
    b. Se asigna un dato al item (datos, muchos datos)
    c. Se añade el item al elemento (datos, muchos datos)

Para generar una salida del documento XML se utilizamos el método generaTextoXML() el cual devuelve un string que contiene el documento XML:

01private String generaTextoXML() {
02 StringWriter strWriter = null;
03 XMLSerializer seliarizadorXML = null;
04 OutputFormat formatoSalida = null;
05 try {
06 seliarizadorXML = new XMLSerializer();
07 strWriter = new StringWriter();
08 formatoSalida = new OutputFormat();
09 // 1. Establecer el formato
10 formatoSalida.setEncoding(XML_ENCODING);
11 formatoSalida.setVersion(XML_VERSION);
12 formatoSalida.setIndenting(true);
13 formatoSalida.setIndent(4);
14 // 2. Definir un objeto donde se generara el codigo
15 seliarizadorXML.setOutputCharStream(strWriter);
16 // 3. Aplicar el formato
17 seliarizadorXML.setOutputFormat(formatoSalida);
18 // 4. Serializar documento XML
19 seliarizadorXML.serialize(documentoXML);
20 strWriter.close();
21 } catch (IOException ioEx) {
22 System.out.println("Error : " + ioEx);
23 }
24 return strWriter.toString();
25}
  1. Utilizando un objeto de la clase OutputFormat, se asigna el tipo de codificación y versión delarchivo XML, activamos la identación y la ponemos a 4 espacios
  2. Un objeto XMLSerializer escribe los datos del documento XML sobre un objeto de flujo de salida, en este caso un objeto StringWriter.
  3. Asignamos el tipo de formato que el objeto XMLSerializer generará
  4. Generamos el documento XML

Comentarios

Entradas populares de este blog

Java POI HSSFCell : añadir comentario en una celda

POI HSSFComment: Una manera simple de añadir un comentario en una celda de excel usando el metodo cell.setCellComment(). public class ExcelTools { public static void main(String[] args){ //escribirExcel(); //leerExcel(); validarValoresDuplicadosLista(); System.out.println("Ejemplo Finalizado."); } public static void escribirExcel(){ try{ //Se crea el libro Excel HSSFWorkbook wb = new HSSFWorkbook(); //Se crea una nueva hoja dentro del libro HSSFSheet sheet = wb.createSheet("HojaEjemplo"); //Se crea una fila dentro de la hoja HSSFRow row = sheet.createRow((short)0); HSSFPatriarch patr = sheet.createDrawingPatriarch(); //Creamos celdas de varios tipos row.createCell((short)0).setCellValue(1); row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue("ejemplo&

Debugging Remoto con Eclipse + WebSphere 7 + Maven

Tienes proyectos java en Maven y no puedes ubicar bugs fácilmente a falta de junit. Sin embargo, existe la alternativa de debugear la aplicación web a través de Java Debugger (jdb). Aquí les muestro una guía de como hacer un debug remoto de la aplicación web en Eclipse y WebSphere 7 a través de Java Debugger (JDB). Eclipse <----> Java Debugger (jdb) <----> WebSphere 7 1. Habilitar el WebSphere en modo Debug. Para esto seguir los siguientes pasos:  1. Servers –> Server Types –> WebSphere application servers 2. Under Server Infrastructure section –> expandir Java and Process Management –> Process definition 3. dentro de la seccion Additional Properties –> click Java Virtual Machine 4. clic en el check “Debug Mode” 5. En texbox Debug arguments, poner este valor:  -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 6. Reiniciar el servidor WebSphere. Ahora, WebSphere se inicia en modo debug, y escuchando en el pu

DB2 Error SQL20054N

Ejecutando un alter table me da el  siguiente error: db2 "ALTER TABLE PRG_REC.ESTIMADO_OBJETIVO DROP COLUMN VTA_OBJ_CAMP_FALTA_EXTRANJERA"; Error:  [db2inst1@ibmdb2test]:/home/db2inst1/1223/REQ1223/rollback$ db2 "ALTER TABLE PRG_REC.ESTIMADO_OBJETIVO DROP COLUMN VTA_OBJ_CAMP_FALTA_EXTRANJERA"; DB21034E  The command was processed as an SQL statement because it was not a valid Command Line Processor command.  During SQL processing it returned: SQL20054N  The table "PRG_REC.ESTIMADO_OBJETIVO" is in an invalid state for the operation.  Reason code="23" .  SQLSTATE=55019 Segun IBM la descripcion del error: SQL20054N:  La tabla   nombre-tabla   está en un estado no válido para la operación. Código de razón= código-razón . 23 Se ha realizado el número máximo de modificaciones recomendadas de REORG. Se permite un máximo de tres modificaciones recomendadas de REORG en una tabla antes de que se deba realizar reorg, para actualizar las fila