Zum Inhalt springen

„Apache XMLBeans“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
tk k
Zeile 1: Zeile 1:
{{Infobox Software
{{Infobox Software
| Name = Apache XMLBeans
| Name = Apache XMLBeans
| Logo = [[Datei:Apache XMLBeans Logo.gif]]
| Logo = [[Datei:Apache XMLBeans Logo.gif|Logo]]
| Screenshot =
| Screenshot =
| Beschreibung = <!-- Beschreibung des Screenshots! -->
| Beschreibung = <!-- Beschreibung des Screenshots! -->
| Maintainer = David Bau, Cesar Andrei, Patrick Calahan et.al.<ref>[http://xmlbeans.apache.org/community/index.html#Who+We+Are XMLBeans Community - XMLBeans Committers]</ref>
| Maintainer = David Bau, Cesar Andrei, Patrick Calahan et al.<ref>[http://xmlbeans.apache.org/community/index.html#Who+We+Are XMLBeans Committers] XMLBeans Community</ref>
| Hersteller =
| Hersteller =
| Management = [[Apache Software Foundation]]
| Management = [[Apache Software Foundation]]
| AktuelleVersion = 2.6.0
| AktuelleVersion = 2.6.0
| AktuelleVersionFreigabeDatum = 14. August 2012
| AktuelleVersionFreigabeDatum = 14. August 2012
Zeile 16: Zeile 16:
| Lizenz = [[Apache-Lizenz]] 2.0
| Lizenz = [[Apache-Lizenz]] 2.0
| Deutsch =
| Deutsch =
| Website = [http://xmlbeans.apache.org xmlbeans.apache.org]
| Website = [http://xmlbeans.apache.org/ xmlbeans.apache.org]
}}
}}


'''XMLBeans''' ist ein Softwarepaket für [[Java (Programmiersprache)|Java]], welches es ermöglicht, Daten aus einem XML-Schema heraus automatisch an Java-Klassen zu binden. Diesen Vorgang nennt man [[XML-Datenbindung]]. Dies ermöglicht ein Arbeiten mit XML-Dokumenten, ohne dass der Programmierer Schnittstellen zur Verarbeitung von XML wie [[Simple API for XML|SAX]] oder [[Document Object Model|DOM]] verwenden muss. XMLBeans ist ein Teil des [[Apache Software Foundation|Apache]] XML-Projekts.
'''XMLBeans''' ist ein Softwarepaket für [[Java (Programmiersprache)|Java]], welches es ermöglicht, Daten aus einem [[Extensible Markup Language|XML]]-Schema heraus automatisch an Java-Klassen zu binden. Diesen Vorgang nennt man [[XML-Datenbindung]]. Dies ermöglicht ein Arbeiten mit XML-Dokumenten, ohne dass der Programmierer Schnittstellen zur Verarbeitung von XML wie [[Simple API for XML|SAX]] oder [[Document Object Model|DOM]] verwenden muss. XMLBeans ist ein Teil des [[Apache Software Foundation|Apache]] XML-Projekts.


== Funktionsweise ==
== Funktionsweise ==
Apache XMLBeans verwendet eine [[XML Schema]]-Definition, um Java-Klassen und -Schnittstellen zu generieren. Falls das XML-Schema nicht vorhanden sein sollte, kann Apache XMLBeans ein Schema basierend auf einem XML-Dokument erzeugen.
Apache XMLBeans verwendet eine [[XML Schema]]-Definition, um Java-Klassen und -Schnittstellen zu generieren. Falls das XML-Schema nicht vorhanden sein sollte, kann Apache XMLBeans ein Schema basierend auf einem XML-Dokument erzeugen.


Die von Apache XMLBeans generierten Java-Klassen und -Schnittstellen können –- wie bei den [[Java Beans]] geläufig - mittels [[Zugriffsfunktion|Getter-]] und [[Zugriffsfunktion|Setter-Methoden]] bearbeitet werden. Darüber hinaus kann von Java aus auch auf den Rest der XML-Informationen wie die Reihenfolge der Elemente im XML-Dokument zugegriffen werden. XMLBeans beherrscht dabei alle Fähigkeiten von XML-Schemas.
Die von Apache XMLBeans generierten Java-Klassen und -Schnittstellen können –&nbsp;wie bei den [[Java Beans]] geläufig&nbsp;– mittels [[Zugriffsfunktion|Getter-]] und [[Zugriffsfunktion|Setter-Methoden]] bearbeitet werden. Darüber hinaus kann von Java aus auch auf den Rest der XML-Informationen wie die Reihenfolge der Elemente im XML-Dokument zugegriffen werden. XMLBeans beherrscht dabei alle Fähigkeiten von XML-Schemas.


Apache XMLBeans bietet neben den Entwicklungswerkzeugen zum Generieren von XML-Dokumenten und Java-Klassen folgende drei [[Programmierschnittstelle]]n:
Apache XMLBeans bietet neben den Entwicklungswerkzeugen zum Generieren von XML-Dokumenten und Java-Klassen folgende drei [[Programmierschnittstelle]]n:
; XmlObject

;XmlObject: Die aus dem XML-Schema generierten Java-Klassen sind von XmlObject abgeleitet. Sie enthalten streng typisierte Getter- und Setter-Methoden für alle im XML-Dokument definierten Elemente. Komplexe XML-Typen sind Referenzen auf andere XmlObjekte. XmlObject selbst bietet Methoden, um das Objekt (inklusive seiner Referenzen) zu validieren, zu durchsuchen oder in ein XML zu verwandeln.
: Die aus dem XML-Schema generierten Java-Klassen sind von XmlObject abgeleitet. Sie enthalten streng typisierte Getter- und Setter-Methoden für alle im XML-Dokument definierten Elemente. Komplexe XML-Typen sind Referenzen auf andere XmlObjekte. XmlObject selbst bietet Methoden, um das Objekt (inklusive seiner Referenzen) zu validieren, zu durchsuchen oder in ein XML zu verwandeln.
; XmlCursor

;XmlCursor: Repräsentiert eine Position im XML-Dokument und bietet die Möglichkeit, auf das XML-Infoset zuzugreifen. Mit Hilfe des XmlCursors ist es etwa möglich, XQuery und XPath auf das XML-Dokument anzuwenden, das XML-Dokument selbst durch Einfügen, Verschieben, Kopieren oder Löschen von XML-Elementen zu verändern oder auf ganze Container-Elemente, Attribute, Processing Instructions oder Kommentare zuzugreifen.
: Repräsentiert eine Position im XML-Dokument und bietet die Möglichkeit, auf das XML-Infoset zuzugreifen. Mit Hilfe des XmlCursors ist es etwa möglich, XQuery und XPath auf das XML-Dokument anzuwenden, das XML-Dokument selbst durch Einfügen, Verschieben, Kopieren oder Löschen von XML-Elementen zu verändern oder auf ganze Container-Elemente, Attribute, Processing Instructions oder Kommentare zuzugreifen.
; SchemaType

;SchemaType: Repräsentiert das hinter den XmlObjects liegende XML-Schema als Objekt. Damit lassen sich beispielsweise XML-Dokumente erzeugen oder die Reihenfolge der Elemente auslesen.
: Repräsentiert das hinter den XmlObjects liegende XML-Schema als Objekt. Damit lassen sich beispielsweise XML-Dokumente erzeugen oder die Reihenfolge der Elemente auslesen.


=== Beispiel ===
=== Beispiel ===
Das folgende Beispiel basiert auf einer XML-Schema-Definition für die Beschreibung eines Landes:
Das folgende Beispiel basiert auf einer XML-Schema-Definition für die Beschreibung eines Landes:
<source lang="xml">
<syntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.openuri.org/domain/country/v1"
<xs:schema targetNamespace="http://www.openuri.org/domain/country/v1"
Zeile 78: Zeile 78:
</xs:simpleType>
</xs:simpleType>
</xs:schema>
</xs:schema>
</syntaxhighlight>
</source>
Aus diesem Schema können jetzt mit den XMLBeans-Werkzeugen ''scomp'' (Schema Compiler) oder ''xmlbeans'' (ein [[Apache Ant|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:
Aus diesem Schema können jetzt mit den XMLBeans-Werkzeugen ''scomp'' (Schema Compiler) oder ''xmlbeans'' (ein [[Apache Ant|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:
<source lang="java">
<syntaxhighlight lang="java">
import org.openuri.domain.country.v1.Country; //die aus dem XML Schema erzeugte Country Klasse
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
import org.openuri.domain.country.v1.Iso; //die aus dem XML Schema erzeugte Iso Klasse
Zeile 108: Zeile 108:
}
}
}
}
</syntaxhighlight>
</source>


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


== Geschichte ==
== Geschichte ==
Apache XMLBeans wurde 2003 unter dem Namen XMLBeans von David Bau gegründet, als dieser 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. Januar 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.
Apache XMLBeans wurde 2003 unter dem Namen XMLBeans von David Bau gegründet, als dieser 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 Frameworks „BEA WebLogic Workshop“. Am 27. Januar 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 ein Apache Top-Level-Projekt. Am 30. Juni wurde die Version 2.0 veröffentlicht. Sie enthielt unter anderem folgende Verbesserungen: Verbesserte Integration von [[XQuery]] und [[XPath]], Unterstützung von DOM Level 2, verbesserte Fehlerbehandlung, Möglichkeiten, die generierten XMLBeans zu erweitern, Performanceverbesserungen, Unterstützung der mit Java 5 veröffentlichten Generics, Generierung von XML-Dokumenten aus XML-Schemas und umgekehrt.<ref name="news">[http://xmlbeans.apache.org/news.html XMLBeans News]</ref>
Am 23. April 2004 wurde die Version 1.0.2 als erste Version bei Apache fertiggestellt. Am 25. Juni desselben Jahres wurde XMLBeans ein Apache Top-Level-Projekt. Am 30. Juni wurde die Version 2.0 veröffentlicht. Sie enthielt unter anderem folgende Verbesserungen: Verbesserte Integration von [[XQuery]] und [[XPath]], Unterstützung von DOM Level 2, verbesserte Fehlerbehandlung, Möglichkeiten, die generierten XMLBeans zu erweitern, Performanceverbesserungen, Unterstützung der mit Java&nbsp;5 veröffentlichten Generics, Generierung von XML-Dokumenten aus XML-Schemas und umgekehrt.<ref name="news">[http://xmlbeans.apache.org/news.html XMLBeans News]</ref>


Die aktuelle Version ist Apache XMLBeans 2.6 vom 14. August 2012. Sie brachte unter anderem einfaches Mappen von simplen Typen auf beliebige Java-Klassen sowie viele kleine Erweiterungen und Fehlerbehebungen.<ref name="news" />
Die aktuelle Version ist Apache XMLBeans 2.6 vom 14. August 2012. Sie brachte unter anderem einfaches Mappen von simplen Typen auf beliebige Java-Klassen sowie viele kleine Erweiterungen und Fehlerbehebungen.<ref name="news" />
Zeile 135: Zeile 135:


== Einzelnachweise ==
== Einzelnachweise ==
<references/>
<references />


{{SORTIERUNG:Apache Xmlbeans}}
{{SORTIERUNG:Apache Xmlbeans}}

Version vom 24. Mai 2015, 00:16 Uhr

Apache XMLBeans

Logo
Basisdaten

Hauptentwickler David Bau, Cesar Andrei, Patrick Calahan et al.[1]
Entwickler Apache Software Foundation
Aktuelle Version 2.6.0
(14. August 2012)
Betriebssystem plattformübergreifend
Programmier­sprache Java (Programmiersprache)
Kategorie XML-Datenbindung
Lizenz Apache-Lizenz 2.0
xmlbeans.apache.org

XMLBeans ist ein Softwarepaket für Java, welches es ermöglicht, Daten aus einem XML-Schema heraus automatisch an Java-Klassen zu binden. Diesen Vorgang nennt man XML-Datenbindung. Dies ermöglicht ein Arbeiten mit XML-Dokumenten, ohne dass der Programmierer Schnittstellen zur Verarbeitung von XML wie SAX oder DOM verwenden muss. XMLBeans ist ein Teil des Apache XML-Projekts.

Funktionsweise

Apache XMLBeans verwendet eine XML Schema-Definition, um Java-Klassen und -Schnittstellen zu generieren. Falls das XML-Schema nicht vorhanden sein sollte, kann Apache XMLBeans ein Schema basierend auf einem XML-Dokument erzeugen.

Die von Apache XMLBeans generierten Java-Klassen und -Schnittstellen können – wie bei den Java Beans geläufig – mittels Getter- und Setter-Methoden bearbeitet werden. Darüber hinaus kann von Java aus auch auf den Rest der XML-Informationen wie die Reihenfolge der Elemente im XML-Dokument zugegriffen werden. XMLBeans beherrscht dabei alle Fähigkeiten von XML-Schemas.

Apache XMLBeans bietet neben den Entwicklungswerkzeugen zum Generieren von XML-Dokumenten und Java-Klassen folgende drei Programmierschnittstellen:

XmlObject
Die aus dem XML-Schema generierten Java-Klassen sind von XmlObject abgeleitet. Sie enthalten streng typisierte Getter- und Setter-Methoden für alle im XML-Dokument definierten Elemente. Komplexe XML-Typen sind Referenzen auf andere XmlObjekte. XmlObject selbst bietet Methoden, um das Objekt (inklusive seiner Referenzen) zu validieren, zu durchsuchen oder in ein XML zu verwandeln.
XmlCursor
Repräsentiert eine Position im XML-Dokument und bietet die Möglichkeit, auf das XML-Infoset zuzugreifen. Mit Hilfe des XmlCursors ist es etwa möglich, XQuery und XPath auf das XML-Dokument anzuwenden, das XML-Dokument selbst durch Einfügen, Verschieben, Kopieren oder Löschen von XML-Elementen zu verändern oder auf ganze Container-Elemente, Attribute, Processing Instructions oder Kommentare zuzugreifen.
SchemaType
Repräsentiert das hinter den XmlObjects liegende XML-Schema als Objekt. Damit lassen sich beispielsweise XML-Dokumente erzeugen oder die Reihenfolge der Elemente auslesen.

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 mittels org.apache.xmlbeans.XmlBeans.compileXsd dynamisch zur Laufzeit erzeugt werden.

Geschichte

Apache XMLBeans wurde 2003 unter dem Namen XMLBeans von David Bau gegründet, als dieser 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 Frameworks „BEA WebLogic Workshop“. Am 27. Januar 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 ein Apache Top-Level-Projekt. Am 30. Juni wurde die Version 2.0 veröffentlicht. Sie enthielt unter anderem folgende Verbesserungen: Verbesserte Integration von XQuery und XPath, Unterstützung von DOM Level 2, verbesserte Fehlerbehandlung, Möglichkeiten, die generierten XMLBeans zu erweitern, Performanceverbesserungen, Unterstützung der mit Java 5 veröffentlichten Generics, Generierung von XML-Dokumenten aus XML-Schemas und umgekehrt.[2]

Die aktuelle Version ist Apache XMLBeans 2.6 vom 14. August 2012. Sie brachte unter anderem einfaches Mappen von simplen Typen auf beliebige Java-Klassen sowie viele kleine Erweiterungen und Fehlerbehebungen.[2]

Am 23. Mai 2014 wurde die Weiterentwicklung eingestellt.

Alternativen

Die folgenden Frameworks für das XML-Binding in Java können als Alternative zu Apache XMLBeans verwendet werden:

Einzelnachweise

  1. XMLBeans Committers XMLBeans Community
  2. a b XMLBeans News