The parser itself is in the class {@link org.biomoby.shared.parser.MobyParser MobyParser} that is accompanied by a list of all Biomoby's XML tags and attribute names stored in the {@link org.biomoby.shared.parser.MobyTags MobyTags} class.
Java objects representing parsed data start with {@link org.biomoby.shared.parser.MobyPackage MobyPackage} - the main container (that also invokes parser itself). A MobyPackage instance corresponds to one network call to a Biomoby service, or to a response from such service.
Here is a full example how to get parsed Biomoby XML data into a MobyPackage (note that the input XML - the variable data in the example - can be given as a String, byte[], or a File which conveniently corresponds with the requirement from the Biomoby API):
try {
MobyPackage mobyInput = MobyPackage.createFromXML (data);
// here do something with 'mobyInput'
} catch (MobyException e) {
System.out.println (e.getMessage());
}
To bring data back into XML is again simple:
try {
// fill response data into a mobyOutput...
MobyPackage mobyOutput = new MobyPackage();
...
// and convert it into XML
String xml = mobyOutput.toXML();
} catch (MobyException e) {
System.out.println (e.getMessage());
}
A MobyPackage then contains one or more {@link
org.biomoby.shared.parser.MobyJob MobyJob}s each of them containing
one "execution" (or a "query" in a Biomoby speak). Note that a
Biomoby service must be able to accept more invocations (jobs,
queries) from one network request. A MobyJob can also carry a
response from a service. Again, data coming from a service can consist
from more responses - actually the number of the MobyJob
objects in a response must be exactly the same as a number of the
MobyJob objects in the originated request. A MobyJob has the data themselves - they are either stored in {@link org.biomoby.shared.parser.MobySimple MobySimple}s or in {@link org.biomoby.shared.parser.MobyCollection MobyCollection}s. The number and types of these {@link org.biomoby.shared.parser.MobyDataElement MobyDataElement}s are defined for each Biomoby service in a Biomoby registry.
The MobySimples have data stored in various data objects - their classes are in the package {@link org.biomoby.shared.datatypes}. The primitive data types are there available directly, the other types can be generated (see details in the package itself).
Here is a picture showing how the entities are relates: