56 const char *
DAP_SCHEMA =
"http://xml.opendap.org/ns/dap/3.3#";
74 if (xmlTextWriterStartElementNS(writer->get_writer(),
NULL, (
const xmlChar*)
"Dataset", (
const xmlChar*)
DAP_SCHEMA) < 0)
75 throw InternalErr(__FILE__, __LINE__,
"Error starting the Dataset element for response ");
77 DDS::Vars_iter i = dds->var_begin();
78 while (i != dds->var_end()) {
80 BESDEBUG(
"xd",
"Printing the values for " << (*i)->name() <<
" (" << (*i)->type_name() <<
")" << endl);
86 if (xmlTextWriterEndElement(writer->get_writer()) < 0)
87 throw InternalErr(__FILE__, __LINE__,
"Error ending Dataset element.");
90 catch (InternalErr &e) {
91 xmlErrorPtr error = xmlGetLastError();
92 if (error && error->message)
93 throw InternalErr(e.get_error_message() +
"; libxml: " + error->message);
95 throw InternalErr(e.get_error_message() +
"; libxml: no message");
101 BESDEBUG(
"xd",
"In datadds_to_xd_datadds" << endl);
106 DataDDS *xd_dds =
new DataDDS(dds->get_factory(), dds->get_dataset_name(), dds->get_version(), dds->get_protocol());
108 DDS::Vars_iter i = dds->var_begin();
109 while (i != dds->var_end()) {
111 xd_dds->add_var(abt);
120 xd_dds->tag_nested_sequences();
129 throw InternalErr(__FILE__, __LINE__,
"Null BaseType to XD factory");
131 switch (bt->type()) {
133 return new XDByte(dynamic_cast<Byte *>(bt));
136 return new XDInt16(dynamic_cast<Int16 *>(bt));
139 return new XDUInt16(dynamic_cast<UInt16 *>(bt));
142 return new XDInt32(dynamic_cast<Int32 *>(bt));
145 return new XDUInt32(dynamic_cast<UInt32 *>(bt));
148 return new XDFloat32(dynamic_cast<Float32 *>(bt));
151 return new XDFloat64(dynamic_cast<Float64 *>(bt));
154 return new XDStr(dynamic_cast<Str *>(bt));
157 return new XDUrl(dynamic_cast<Url *>(bt));
160 return new XDArray(dynamic_cast<Array *>(bt));
162 case dods_structure_c:
163 return new XDStructure(dynamic_cast<Structure *>(bt));
165 case dods_sequence_c:
166 return new XDSequence(dynamic_cast<Sequence *>(bt));
169 return new XDGrid(dynamic_cast<Grid *>(bt));
172 throw InternalErr(__FILE__, __LINE__,
"Unknown type");
BaseType * basetype_to_xd(BaseType *bt)
static class NCMLUtil overview
#define BESDEBUG(x, y)
macro used to send debug information to the debug stream
void get_data_values_as_xml(DataDDS *dds, XMLWriter *writer)
Using the XDOutput::print_ascii(), write the data values to an output file/stream as ASCII...
DataDDS * datadds_to_xd_datadds(DataDDS *dds)
virtual void print_xml_data(libdap::XMLWriter *writer, bool show_type)