Articulo de referencia

Apache XMLBeans

XMLBeans es un marco de trabajo para la vinculación de Java con XML que forma parte del proyecto XML de la Apache Software Foundation . Descripción XMLBeans es una herramienta q...

XMLBeans es un marco de trabajo para la vinculación de Java con XML que forma parte del proyecto XML de la Apache Software Foundation .

Descripción

XMLBeans es una herramienta que permite acceder a todo el potencial de XML de forma amigable para Java. La idea es aprovechar la riqueza y las características de XML y XML Schema , y ​​mapearlas de la manera más natural posible al lenguaje Java equivalente y a sus estructuras de tipado. XMLBeans utiliza XML Schema para compilar interfaces y clases Java que luego se pueden usar para acceder y modificar datos de instancias XML. Usar XMLBeans es similar a usar cualquier otra interfaz o clase Java: con métodos como `getFoo` o `setFoo`, igual que cuando se trabaja con Java. Si bien uno de los usos principales de XMLBeans es acceder a datos de instancias XML con clases Java fuertemente tipadas, también existen API que permiten acceder al conjunto de información XML completo (XMLBeans mantiene la fidelidad del conjunto de información XML), así como permitir la reflexión en el propio esquema XML a través de un modelo de objeto de esquema XML.

Características de los XMLBeans

  1. Compatibilidad con esquemas XML grandes .
  2. Compatibilidad con conjuntos de información XML grandes .

Compatibilidad con esquemas XML extensos: XMLBeans es totalmente compatible con esquemas XML y las clases Java correspondientes proporcionan estructuras para todas las funcionalidades principales de estos esquemas. Esto es fundamental, ya que a menudo no se tiene control sobre las características de los esquemas XML necesarias para trabajar con ellos en Java. Además, las aplicaciones orientadas a esquemas XML pueden aprovechar al máximo su potencial sin tener que limitarse a un subconjunto.

Compatibilidad con conjuntos de información XML extensos: Al deserializar una instancia XML, se conserva el conjunto de información XML completo, el cual queda disponible para el desarrollador. Esto es fundamental, ya que este subconjunto de XML no se representa fácilmente en Java. Por ejemplo, en una aplicación específica, podría ser necesario conocer el orden de los elementos o los comentarios.

Objetivo

Un objetivo principal de XMLBeans ha sido su aplicabilidad en todas las situaciones de programación XML que no se ejecutan en memoria (sin procesamiento en flujo). El desarrollador debería poder compilar su esquema XML en un conjunto de clases Java y saber que podrá:

  1. Utilice XMLBeans para todos los esquemas que encuentre.
  2. Acceda al XML al nivel que sea necesario sin necesidad de otras herramientas.

API

Para lograr los objetivos mencionados, XMLBeans proporciona tres API principales:

  • Objeto XML
  • Cursor XML
  • Tipo de esquema

XmlObject: Las clases Java generadas a partir de un esquema XML derivan de XmlObject. Estas proporcionan métodos getter y setter fuertemente tipados para cada uno de los elementos del XML definido. Los tipos complejos son, a su vez, XmlObjects. Por ejemplo, getCustomer podría devolver un CustomerType (que es un XmlObject). Los tipos simples se convierten en métodos getter y setter simples con el tipo Java correcto. Por ejemplo, getName podría devolver un String.

XmlCursor: Desde cualquier objeto XML, el desarrollador puede obtener un XmlCursor. Esto proporciona un acceso eficiente y de bajo nivel al conjunto de información XML. Un cursor representa una posición en la instancia XML. El cursor se puede mover dentro de la instancia XML con cualquier nivel de detalle, desde caracteres individuales hasta tokens.

SchemaType: XMLBeans proporciona un modelo de objeto de esquema XML completo que permite reflejar la metainformación del esquema subyacente. Por ejemplo, el desarrollador podría generar una instancia XML de ejemplo para un esquema XML o buscar las enumeraciones de un elemento para visualizarlas.

Ejemplo

A continuación se muestra un ejemplo de una definición de esquema XML simple para describir un país.

<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace= "http://www.openuri.org/domain/country/v1" xmlns:tns= "http://www.openuri.org/domain/country/v1" xmlns:xs= "http://www.w3.org/2001/XMLSchema" elementFormDefault= "qualified" attributeFormDefault= "unqualified" version= "1.0" > <xs:element name= "Country" type= "tns:Country" /> <xs:complexType name= "Country" > <xs:sequence> <xs:element name= "Name" type= "xs:string" /> <xs:element name= "Population" type= "xs:int" /> <xs:element name= "Iso" type= "tns:Iso" /> </xs:sequence> </xs:complexType> <xs:complexType name= "Iso" > <xs:annotation><xs:documentation> ISO 3166 </xs:documentation></xs:annotation> <xs:sequence> <xs:element name= "Alpha2" type= "tns:IsoAlpha2" /> <xs:element name= "Alpha3" type= "tns:IsoAlpha3" /> <xs:element name= "CountryCode" type= "tns:IsoCountryCode" /> </xs:sequence> </xs:complexType> <xs:simpleType name= "IsoCountryCode" > <xs:restriction base= "xs:int" > <xs:totalDigits value= "3" /> </xs:restriction> </xs:simpleType> <xs:simpleType nombre= "IsoAlpha2" > <xs:restriction base= "xs:string" > <xs:pattern value= "[AZ]{2}" /> <xs:whiteSpace value= "collapse" /> </xs:restriction> </xs:simpleType> <xs:simpleType name= "IsoAlpha3" > <xs:restricción base= "xs:string" > <xs:pattern value= "[AZ]{3}" /> <xs:whiteSpace value= "collapse" /> </xs:restriction> </xs:simpleType> </xs:schema>

Cuando el esquema se compila en clases XMLBean (por ejemplo, usando Ant ), es muy fácil crear y manipular datos XML que se ajusten a la definición del esquema. El siguiente código Java es un ejemplo sencillo que ilustra cómo se puede crear y validar un documento XML.

import org.openuri.domain.country.v1.Country ; import org.openuri.domain.country.v1.Iso ; public class CountrySample { public static void main ( String [] args ) { Country country = Country . Factory . newInstance (); country . setName ( "Denmark" ); country . setPopulation ( 5450661 ); // de Wikipedia :-) // imprimir country XMLBean como XML System . out . println ( country . xmlText ()); // comprobar si el documento es válido: imprimirá "El documento no es válido" // porque el elemento hijo Iso requerido no está en el objeto System . out . println ( "El documento es " + ( country . validate () ? "válido" : "inválido" )); // agregar hijo con tipo complejo Iso para que el documento sea válido Iso iso = country . addNewIso (); iso . iso.setAlpha2 ( "DK" ); iso.setAlpha3 ( "DNK" ) ; iso.setCountryCode ( 208 ) ; // Imprimir el XMLBean del país como XML System.out.println ( country.xmlText ( ) ) ; // Comprobar si el documento es válido: imprimirá " El documento es válido" System.out.println ( " El documento es " + ( country.validate ( ) ? "válido" : " inválido " ) ) ; } }

Historia

David Bau fue el diseñador principal del proyecto XMLBeans 1.0 mientras trabajaba para BEA . XMLBeans se basó en XMLMaps , una herramienta de enlace XML incluida en productos anteriores de BEA WebLogic . XMLBeans se desarrolló originalmente como parte del marco de trabajo propietario BEA WebLogic Workshop Framework, pero en las entrevistas realizadas tras su anuncio el 27 de enero de 2003 quedó claro que BEA quería que se convirtiera en un estándar abierto. En ese momento, no se decidió con qué organización quería BEA colaborar en el proceso de estandarización. Más tarde ese mismo año, se donó a la Apache Software Foundation. El equipo original incluía a Cezar Cristian Andrei y Eric Vasilik; posteriormente se unieron Cliff Schmidt, Radu Preotiuc-Pietro, Jacob Danner, Kevin Krouse y Wing Yew Poon. Actualmente, Apache POI está desarrollando XMLBeans .

  • 27 de enero de 2003: BEA anuncia XMLBeans como una tecnología en fase de prueba.
  • 24 de septiembre de 2003: BEA dona XMLBeans a la Apache Software Foundation, donde se une al Apache Incubator Project.
  • 23 de abril de 2004: Se lanza XMLBeans versión 1.0.2. Este es el primer lanzamiento del proyecto incubador.
  • 25 de junio de 2004: XMLBeans salió del programa Apache Incubator Project para convertirse en un proyecto de primer nivel.
  • 30 de junio de 2005: Se lanza XMLBeans versión 2.0.
  • 16 de noviembre de 2005: Se lanza XMLBeans versión 2.1.
  • 23 de junio de 2006: Se lanza XMLBeans versión 2.2.
  • 1 de junio de 2007: Se lanza XMLBeans versión 2.3.
  • 8 de julio de 2008: Se lanza XMLBeans versión 2.4.
  • 14 de diciembre de 2009: Se lanza XMLBeans versión 2.5.
  • 14 de agosto de 2012: Se lanza XMLBeans versión 2.6.
  • 23 de mayo de 2014: XMLBeans fue retirado oficialmente y su desarrollo activo cesó temporalmente.
  • 29 de junio de 2018: XMLBeans fue "reactivado" y Apache POI asumió el desarrollo activo. [ 2 ]

Véase también

Referencias

  1. "Página del proyecto Apache XMLBeans" .
  2. "Historial de XMLBeans" .
  • Sitio web oficial
  • Recursos XMLBeans
  • El proyecto Apache XML
  • Tarea Ant de XMLBean
  • Recursos de enlace XML - xbeans de esquemas populares Archivado el 11/04/2009 en Wayback Machine