Arquitectura Java para enlace XML (JAXB) | Serie 1

Java Architecture for XML Binding (JAXB) define una API para leer y escribir objetos Java hacia y desde documentos XML. JAXB brinda a los desarrolladores de Java una forma eficiente y estándar de mapeo entre código XML y Java. JAXB facilita a los desarrolladores ampliar sus aplicaciones con tecnologías XML y de servicios web. Al principio, JAXB se desarrolló como un proyecto independiente, pero finalmente se convirtió en parte de JDK en Java 6.

Arquitectura Java para funciones de enlace XML

Aplicación de JAXB

El marco JAXB es útil para realizar las siguientes operaciones:

  • Cambie el contenido XML a una representación Java.
  • Acceder y actualizar la representación de Java
  • Cambie la representación de Java a contenido XML.

Anotaciones JAXB

JAXB utiliza anotaciones para indicar los elementos centrales. Algunas anotaciones JAXB básicas que se pueden usar en su clase Java para operaciones JAXB son:

Anotación Descripción
@XmlRootElement Debe requerir anotación para que el objeto se use en JAXB. Define el elemento raíz para el contenido XML.
@XmlType Asigna la clase al tipo de esquema XML. Esto es opcional. Usamos la anotación @XmlType (propOrder = {“lista de atributos en orden”}) para definir el orden específico de los elementos en el archivo XML.
@XmlTransient Para excluir un objeto del mapeo como parte de la jerarquía de herencia, simplemente debe anotarlo con @XmlTransient.
@AtributoXml Esto creará la propiedad Object como atributo.
@XmlElement Se utiliza para definir un elemento en un archivo XML. Puede utilizar @XmlElement(nombre = “Edad”) si desea dar un nombre específico a ese elemento.

Dos conceptos básicos relacionados con JAXB son:

  1. Marshalling: convertir un objeto java a xml
  2. UnMarshalling: convertir xml a objeto java

Clasificación

A continuación se muestra el algoritmo paso a paso para convertir objetos Java a XML (Marshalling):

  1. Primero cree objetos Java para ser Marshalled.
  2. Cree el objeto JAXBContext e inicialice el objeto Marshaller.
  3. Para obtener la salida xml formateada, se puede establecer JAXB_FORMATTTED_OUTPUT en True (este paso es opcional).
  4. Cree un objeto de archivo xml proporcionando la ubicación del archivo como parámetro para la clase de archivo
  5. Llame al método marshal en el objeto Marshaller y pase el objeto de archivo XML creado al método marshal.
  6. Ahora se crea el archivo XML.

Ejemplo : Primero vamos a crear un objeto Student con los atributos FullName, StudentDegree, StudentMarks y luego vamos a convertir este objeto a un esquema XML siguiendo los pasos anteriores.

Creando la clase Student.java con los atributos FullName, StudentDegree, StudentMarks.

import java.util.ArrayList;
  
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
  
// Below annotation defines root element of XML file
@XmlRootElement
public class Student {
  
    private String FullName;
    private String StudentDegree;
    private String StudentMarks;
    public String getFullName()
    {
        return FullName;
    }
    // Sets element of xml with element name is "Student Name"
    @XmlElement(name = "Student Name")
    public void setFullName(String fullName)
    {
        FullName = fullName;
    }
    public String getStudentDegree()
    {
        return StudentDegree;
    }
    @XmlElement(name = "Student Degree")
    public void setStudentDegree(String studentDegree)
    {
        StudentDegree = studentDegree;
    }
    public String getStudentMarks()
    {
        return StudentMarks;
    }
    @XmlElement(name = "Student Marks")
    public void setStudentMarks(String studentMarks)
    {
        StudentMarks = studentMarks;
    }
}

Clase principal: JAVAObjToXml.java que va a convertir el objeto Student en XML Schema.

import java.io.File;
import java.util.ArrayList;
  
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
  
public class JAVAObjToXml {
    public static void main(String[] args)
    {
  
        // creating Student object
        Student student = new Student();
        student.setFullName("Aman Singh");
        student.setStudentDegree("Degree");
        student.setStudentMarks("688/900");
  
        try {
  
            // Create JAXB context and initializing Marshaller
            JAXBContext context = JAXBContext.newInstance(Student.class);
            Marshaller marshaller = context.createMarshaller();
  
            // For formatted output of xml
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
  
            // Create xml file object
            File XMLfile = new File("D:\\StudentRecord.xml");
  
            // Java object to XML file
            marshaller.marshal(student, XMLfile);
            // Print to console
            marshaller.marshal(student, System.out);
        }
        catch (JAXBException e) {
            e.printStackTrace();
        }
    }
}

Salida :

Archivo StudentRecord.xml generado para el objeto Student.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
    <Student Name>Aman Singh</Student Name>
    <Student Degree>Degree</Student Degree>
    <Student Marks>688/900</Student Marks>
</student>

Pros y contras de usar JAXB

Ventajas:

  • Archivo XML fácil de clasificar para otros objetivos de datos como inputStream, Node DOM.
  • Archivo XML fácil de separar de otros objetivos de datos.
  • No es necesario conocer las técnicas de análisis de XML.
  • fácil de usar que el analizador DOM o SAX

Contras:

  • JAXB es una API de capa alta, por lo que tiene menos control sobre el análisis que SAX o DOM.
  • Es más lento que SAX.

Referencias:

Publicación traducida automáticamente

Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *