<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<rdf:RDF xml:lang="en"
         xmlns="http://usefulinc.com/ns/doap#" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:asfext="http://projects.apache.org/ns/asfext#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
<!--
  =======================================================================

   Copyright (c) 2006 The Apache Software Foundation.  
   All rights reserved.

  =======================================================================
-->
  <Project rdf:about="http://XMLBeans.rdf.apache.org/">
    <created>2006-03-27</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache XMLBeans</name>
    <homepage rdf:resource="http://xmlbeans.apache.org/" />
    <asfext:pmc rdf:resource="http://xmlbeans.apache.org" />
    <shortdesc>XMLBeans is a technology for accessing XML by binding it to Java types. XMLBeans provides several ways to get at the XML: strong XMLSchema typed model, cursor API, streaming (SAX, Stax) and DOM. XMLBeans covers 100% XMLSchema support while giving access to full infoset of documents.</shortdesc>
    <description>XMLBeans is a tool that allows you to access the full power of XML in a Java friendly way. The idea is that you can take advantage of the richness and features of XML and XML Schema and have these features mapped as naturally as possible to the equivalent Java language and typing constructs. XMLBeans uses XML Schema to compile Java interfaces and classes that you can then use to access and modify XML instance data. Using XMLBeans is similar to using any other Java interface/class, you will see things like getFoo or setFoo just as you would expect when working with Java. While a major use of XMLBeans is to access your XML instance data with strongly typed Java classes there are also API's that allow you access to the full XML infoset (XMLBeans keeps XML Infoset fidelity) as well as to allow you to reflect into the XML schema itself through an XML Schema Object model.

For more details on XMLBeans see the XMLBeans Wiki pages or the XMLBeans documentation (the Documentation tab on this website).
What Makes XMLBeans Different

There are at least two major things that make XMLBeans unique from other XML-Java binding options.

   1. Full XML Schema support. XMLBeans fully supports XML Schema and the corresponding java classes provide constructs for all of the major functionality of XML Schema. This is critical since often times you do not have control over the features of XML Schema that you need to work with in Java. Also, XML Schema oriented applications can take full advantage of the power of XML Schema and not have to restrict themselvs to a subset.
   2. Full XML Infoset fidelity.When unmarshalling an XML instance the full XML infoset is kept and is available to the developer. This is critical because because of the subset of XML that is not easily represented in java. For example, order of the elements or comments might be needed in a particular application.

A major objective of XMLBeans has been to be applicable in all non-streaming (in memory) XML programming situations. You should be able to compile your XML Schema into a set of java classes and know that 1) you will be able to use XMLBeans for all of the schemas you encounter (even the warped ones) and 2) that you will be able to get to the XML at whatever level is necessary - and not have to resort to multple tools to do this.

To accomplish this XMLBeans provides three major APIs:

    * XmlObject The java classes that are generated from an XML Schema are all derived from XmlObject. These provide strongly typed getters and setters for each of the elements within the defined XML. Complex types are in turn XmlObjects. For example getCustomer might return a CustomerType (which is an XmlObject). Simple types turn into simple getters and setters with the correct java type. For example getName might return a String.
    * XmlCursor From any XmlObject you can get an XmlCursor. This provides efficient, low level access to the XML Infoset. A cursor represents a position in the XML instance. You can move the cursor around the XML instance at any level of granularity you need from individual characters to Tokens.
    * SchemaType XMLBeans provides a full XML Schema object model that you can use to reflect on the underlying schema meta information. For example, you might want to generate a sample XML instance for an XML schema or perhaps find the enumerations for an element so that you can display them.

All of this was built with performance in mind. Informal benchmarks and user feedback indicate that XMLBeans is extremely fast.
</description>
    <bug-database rdf:resource="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10436" />
    <mailing-list rdf:resource="http://www.mail-archive.com/user%40xmlbeans.apache.org/" />
    <download-page rdf:resource="http://www.apache.org/dyn/closer.cgi/xmlbeans/" />
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/xml" />
    <release>
      <Version>
        <name>XMLBeans v2.1.0</name>
        <created>2005-11-16</created>
        <revision>2.1.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>XMLBeans v2.0.0</name>
        <created>2005-06-30</created>
        <revision>2.0.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>XMLBeans v1.0.4</name>
        <created>2005-02-24</created>
        <revision>1.0.4</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>XMLBeans v1.0.4-jdk1.3</name>
        <created>2005-02-24</created>
        <revision>1.0.4-jdk1.3</revision>
      </Version>
    </release>
    <repository>
      <SVNRepository>
        <location rdf:resource="http://svn.apache.org/repos/asf/xmlbeans/trunk/"/>
        <browse rdf:resource="http://svn.apache.org/viewcvs.cgi/xmlbeans/trunk/"/>
      </SVNRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>Cezar Andrei</foaf:name>
          <foaf:mbox rdf:resource="mailto:cezar@apache.org"/>
      </foaf:Person>
    </maintainer>
  </Project>
</rdf:RDF>
