Zum Inhalt springen

Apache XMLBeans

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 26. Oktober 2009 um 17:32 Uhr durch Sebastian.Dietrich (Diskussion | Beiträge) (Beispiel). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Apache XMLBeans
Basisdaten

Hauptentwickler David Bau, Cesar Andrei, Patrick Calahan et.al.[1]
Entwickler Apache Software Foundation
Aktuelle Version 2.4.0
(8. Juli 2008)
Betriebssystem plattformübergreifend
Programmier­sprache Java (Programmiersprache)
Kategorie XML-Binding
Lizenz Apache-Lizenz 2.0
xmlbeans.apache.org

XMLBeans ist ein Softwarepaket zum Einbinden von XML Dateien in Java. XMLBeans ist ein Teil des Apache XML Projekts.

Es wird eine XML Schema Definition verwendet, um Klassen und Schnittstellen zu kompilieren. Daraus entstehen dann Java Objekte, die wiederum - wie bei den Java Beans geläufig - mittels Getter- und Setter-Methoden bearbeitet werden können.

Beispiel

Das folgende Beispiel basiert auf einer XML Schema Definition für die Beschreibung eines Landes:

 <?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 name="IsoAlpha2">
     <xs:restriction base="xs:string">
       <xs:pattern value="[A-Z]{2}"/>
       <xs:whiteSpace value="collapse"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="IsoAlpha3">
     <xs:restriction base="xs:string">
       <xs:pattern value="[A-Z]{3}"/>
       <xs:whiteSpace value="collapse"/>
     </xs:restriction>
   </xs:simpleType>
 </xs:schema>

Aus diesem Schema können jetzt mit den XMLBeans Werkzeugen scomp (Schema Compiler) oder xmlbeans (ein Ant-Task) Java Klassen erzeugt werden, welche XML Daten, die dem gegebenen Schema entsprechen, erzeugen und manipulieren können. Der folgende Java Code zeigt wie damit ein XML Dokument erzeugt und validiert werden kann:

 import org.openuri.domain.country.v1.Country; //die aus dem XML Schema erzeugte Country Klasse
 import org.openuri.domain.country.v1.Iso; //die aus dem XML Schema erzeugte Iso Klasse
 public class CountrySample {
   public static void main(String[] args) {
     Country country = Country.Factory.newInstance();
     country.setName("Liechtenstein");
     country.setPopulation(35446);  // siehe http://de.wikipedia.org/wiki/Liechtenstein

     // XML Ausgabe des Country Objektes
     System.out.println(country.xmlText());

     // Prüfung ob das Country Objekt valide ist (ist invalid, weil es keine Iso hat)
     System.out.println ("Country ist " + (country.validate() ? "valid" : "invalid"));

     // Füge den komplexen Typ Iso dem Country Objekt hinzu
     Iso iso = country.addNewIso();
     iso.setAlpha2("LI"); // siehe http://de.wikipedia.org/wiki/ISO-3166-1-Kodierliste
     iso.setAlpha3("LIE");
     iso.setCountryCode(438);

     // XML Ausgabe des Country Objektes
     System.out.println(country.xmlText());

     // Prüfung ob das Country Objekt valide ist (ist jetzt valide)
     System.out.println ("Document is " + (country.validate() ? "valid" : "invalid"));
   }
 }

Die aus dem XML Schema generierten Klassen Country und Iso können auch erst zur Laufzeit dynamisch mittels org.apache.xmlbeans.XmlBeans.compileXsd erzeugt werden.

Geschichte

Apache XMLBeans wurde 2003 unter dem Namen XMLBeans von David Bau gegründet, als er für BEA Systems arbeitete. Es basierte auf XMLMaps, dem früheren XML-Binding Framework des BEA WebLogic Servers. XMLBeans war ursprünglich ein proprietärer Bestandteil des BEA WebLogic Workshop Frameworks. Am 27. Jänner 2003 wurde es erstmals als Vorschauversion vorgestellt. Am 24. September desselben Jahres spendete BEA XMLBeans der Apache Software Foundation, wo es als Apache Incubator Projekt angenommen wurde.

Am 23. April 2004 wurde die Version 1.0.2 als erste Version bei Apache fertiggestellt. Am 25. Juni desselben Jahres wurde XMLBeans Apache Top Level Projekt und veröffentlichte am 30. Juni die Version 2.0. Sie enthielt unter anderem folgende Verbesserungen: Verbesserte XQuery/XPath Integration, DOM Level 2 Support, Verbesserte Fehlerbehandlung, Möglichkeiten die generierten XMLBeans zu erweitern, Performanceverbesserungen, Unterstützung für Java 5 Generics, Generierung von XML Instanzen aus XML Schemas und vice versa.[2]

Die aktuelle Version ist Apache XMLBeans 2.4 vom 8. Juni 2008.

Alternativen

Die folgenden Java XML Binding Frameworks können als Alternative zu Apache XMLBeans verwendet werden:

Einzelnachweise

  1. XMLBeans Community - XMLBeans Committers
  2. XMLBeans News