
uk.ac.starlink.votable.package.html Maven / Gradle / Ivy
Classes for VOTable input and output.
Elements in the VOTable DTD are represented by instances of
{@link uk.ac.starlink.votable.VOElement}
or one of its subclasses. Not every VOTable
element has a corresponding class, but the generic facilities
of VOElement can still be used for navigation if required.
In general a subclass of VOElement is provided in those
cases for which functionality beyond that given by the
{@link uk.ac.starlink.votable.VOElement#getAttribute} and
{@link uk.ac.starlink.votable.VOElement#getChildren}
is required.
The usual way of using these classes to read a VOTable document
would be to use one of the static makeVOElement methods in
{@link uk.ac.starlink.votable.VOElementFactory} to construct a
top-level VOElement from a file, URL, input stream, DOM or whatever
and then to interrogate this element for its children to find
the elements of interest (e.g. TABLE elements).
A hybrid SAX/DOM parsing scheme is used, so that if a parse is done by
this library (when using one of the non-DOM constructors of VOElement
or one of its subclasses) bulk data is not represented in the resulting
DOM. In the case of TABLEDATA encoding, this means that the
(potentially large) number of TR and TD nodes are parsed directly
using SAX and never introduced into the DOM. In the case of FITS or
BINARY encoding in which the data is base64-encoded inline in the STREAM
element, this element is read and converted into table data during
the parse, and the screed of base64 text is not included in the DOM.
The user doesn't have to worry about all this of course, but it has
the effect that the parsing is fast and as memory-efficient as possible.
If the parsing has already been done (a DOMSource constructor is used
to construct the VOElement instances) the library will use the
text data in DOM nodes which exist in the presented DOM (it will not
excise them from the given DOM).
Implementation Status
These classes support (with a very few exceptions) to the
VOTable DTD version 1.0.
All three defined data implementations (TABLEDATA, FITS and BINARY)
are fully supported for input and output.
@see STIL