The simplest way to output a table in VOTable format is to
use a VOTableWriter
,
which will output a VOTable document with the simplest structure capable
of holding a TABLE element, namely:
<VOTABLE version='1.0'> <RESOURCE> <TABLE> <!-- .. FIELD elements here --> <DATA> <!-- table data here --> </DATA> </TABLE> </RESOURCE> </VOTABLE>The writer can be configured/constructed to write its output in any of the formats described in Section 7.2 (TABLEDATA, inline FITS etc) by using its
setDataFormat
and
setInline
methods.
In the case of streamed output which is not inline,
the streamed (BINARY or FITS) data will be written to a
with a name similar to that of the main XML output file.
Assuming that you have your StarTable
ready to output,
here is how you could write it out in two of the possible formats:
void outputAllFormats( StarTable table ) throws IOException { // Create a default StarTableOutput, used for turning location // strings into output streams. StarTableOutput sto = new StarTableOutput(); // Obtain a writer for inline TABLEDATA output. VOTableWriter voWriter = new VOTableWriter( DataFormat.TABLEDATA, true, VOTableVersion.V13 ); // Use it to write the table to a named file. voWriter.writeStarTable( table, "tabledata-inline.xml", sto ); // Modify the writer's characteristics to use it for referenced FITS output. voWriter.setDataFormat( DataFormat.FITS ); voWriter.setInline( false ); // Use it to write the table to a different named file. // The writer will choose a name like "fits-href-data.fits" for the // actual FITS file referenced in the XML. voWriter.writeStarTable( table, "fits-href.xml", sto ); }