Utilice el tiempo de ejecución de JAXB (arquitectura Java™ para enlaces XML) para manipular los documentos de instancias XML.
Antes de empezar
Utilice JAXB para generar clases Java desde un esquema
XML con el compilador de esquemas, el mandato
xjc o para generar un esquema XML a partir de una clase
Java con el generador de esquemas y el mandato
schemagen.
Acerca de esta tarea
Utilices las herramientas y las API de JAXB para establecer correlaciones entre un esquema XML y clases Java. Después de los enlaces de datos, utilice la API de tiempo de ejecución del enlace JAXB para convertir documentos de instancia XML en objetos Java, y viceversa. Se puede acceder a los datos almacenados en un documento XML sin tener que comprender la estructura de datos. Los artefactos y las clases anotadas JAXB contienen toda la información que necesita la API de tiempo de ejecución de JAXB para procesar documentos de instancia XML.
La API de tiempo de ejecución de JAXB permite la clasificación de objetos
JAXB en XML y la desclasificación del documento XML en las instancias de clase JAXB.
Procedimiento
- Clasifique objetos JAXB en documentos de instancia XML.
Utilice la API de tiempo de ejecución de
JAXB para clasificar o convertir instancias de objeto JAXB en un documento de instancia XML.
- Cree una instancia de las clases JAXB.
- Invoque el clasificador JAXB.
En este ejemplo se muestra cómo se puede crear una instancia de los objetos JAXB generados dentro de una aplicación y utilizar la clase JAXBContext y las API del clasificador de tiempo de ejecución de JAXB para clasificar los objetos JAXB en instancias XML.
JAXBContext jc = JAXBContext.newInstance("myPackageName");
//Crear clasificador
Marshaller m = jc.createMarshaller();
//Clasificar objeto en archivo.
m.marshal(myJAXBObject, myOutputStream);
La implementación de la referencia de JAXB
incorpora propiedades adicionales del clasificador específicas del proveedor como, por ejemplo, la correlación del prefijo de espacio de nombres, el sangrado y el control de escape de carácter, que no están definidas por la especificación de JAXB. Utilice estas propiedades para especificar controles adicionales del proceso de clasificación. Estas propiedades sólo funcionan con la implementación de la referencia de JAXB y pueden no funcionar con otros proveedores de JAXB. En la especificación de la arquitectura Java para enlaces XML JAXB RI Vendor Extensions Runtime
Properties (Propiedades de ejecución de ampliaciones de proveedor RI JAXB (arquitectura Java para enlaces XML), se encuentra información adicional relacionada con las propiedades específicas de proveedor.
- Desclasifique archivos XML en objetos JAXB.
Utilice la API de tiempo de ejecución de JAXB para desclasificar o convertir un documento de instancia XML en instancias de objeto JAXB.
- Obtenga un documento de instancia XML existente.
- Invoque el desclasificador JAXB.
En este ejemplo se muestra un programa que lee un documento XML y desclasifica o
convierte el documento XML en instancias de objeto JAXB.
Utilice la clase
JAXBContext y las API del desclasificador de ejecución de JAXB para desclasificar el documento XML.
JAXBContext jc = JAXBContext.newInstance("myPackageName");
//Crear desclasificador
Unmarshaller um = jc.createUnmarshaller();
//Desclasificar contenido XML del archivo myDoc.xml en
la instancia de objeto Java.
MyJAXBObject myJAXBObject = (MyJAXBObject)
um.unmarshal(new java.io.FileInputStream( "myDoc.xml" ));
Resultados
Ahora puede clasificar las clases Java JAXB y desclasificar datos XML utilizando la infraestructura de enlaces JAXB. Consulte la documentación de la implementación de la referencia JAXB para obtener información adicional sobre las API de tiempo de ejecución para clasificar y desclasificar
Avoid trouble: Si Java 2 Security está habilitada, empaquete las llamadas a método JAXBContext.newInstance(), Unmarshaller.unmarshal() y Marshaller.marshal() en un método AccessController.doPrivileged para evitar una excepción de seguridad.
gotcha
.