XMLDataIOStyle formatObj = CurrentArray.getXMLDataIOStyle();
       public void action (SaxDocumentHandler handler)        throws SAXException       {           // we stopped reading datanode, lower count by one          DataNodeLevel--;          //  we might still be nested within a data node          // if so, return now to accumulate more data within the DATABLOCK          if(DataNodeLevel != 0)             return;          // only add the data here if it was *not* read in from a file           if (CurrentArray.getDataCube().getHref() != null) return;          // now we are ready to read in untagged data (both delimited/formmatted styles)           // from the DATABLOCK          // Note: unfortunately we are reduced to using regex style matching          // instead of a buffer read in formatted reads. Come back and          // improve this later if possible.          XMLDataIOStyle formatObj = CurrentArray.getXMLDataIOStyle();          if ( formatObj instanceof DelimitedXMLDataIOStyle ||               formatObj instanceof FormattedXMLDataIOStyle )           {              FieldAxis fieldAxis = null;              boolean hasFieldAxis = false;              // determine the size of the dataFormat (s) in our dataCube              if (CurrentArray.hasFieldAxis()) {                 // if there is a field axis, then its set to the number of fields                 fieldAxis = CurrentArray.getFieldAxis();                 MaxDataFormatIndex = (fieldAxis.getLength()-1);                 hasFieldAxis = true;              } else {                 // its homogeneous                  MaxDataFormatIndex = 0;              }              Locator myLocator = CurrentArray.createLocator();              // myLocator.setIterationOrder(AxisReadOrder); // shouldnt be needed now, havent checked tho               CurrentDataFormatIndex = 0;               ArrayList strValueList;              // set up appropriate instructions for reading              if ( formatObj instanceof FormattedXMLDataIOStyle ) {                 // snag the string representation of the values                 strValueList = formattedSplitStringIntoStringObjects( DATABLOCK.toString(),                                                                        ((FormattedXMLDataIOStyle) formatObj)                                                                     );                 if (strValueList.size() == 0) {                    Log.errorln("Error: XDF Reader is unable to acquire formatted data, bad format?");                    System.exit(-1);                 }              } else {                 // Delimited Case here                 // snag the string representation of the values                 strValueList = splitStringIntoStringObjects( DATABLOCK.toString(),                                                 ((DelimitedXMLDataIOStyle) formatObj).getDelimiter(),                                                 ((DelimitedXMLDataIOStyle) formatObj).getRepeatable(),                                                 ((DelimitedXMLDataIOStyle) formatObj).getRecordTerminator()                                              );              }              // fire data into dataCube              Iterator iter = strValueList.iterator();              while (iter.hasNext())               {                 DataFormat CurrentDataFormat = DataFormatList[CurrentDataFormatIndex];                 // adding data based on what type..                 String thisData = (String) iter.next();                 try {                    addDataToCurrentArray(myLocator, thisData, CurrentDataFormat, IntRadix[CurrentDataFormatIndex]);                 } catch (SetDataException e) {                    // bizarre error. Cant add data (out of memory??) :P                    Log.errorln("Unable to setData:["+thisData+"], ignoring request");                    // Log.printStackTrace(e);                    throw new SAXException(e.getMessage());                 }                 myLocator.next();                 // bump up DataFormat appropriately                 if (hasFieldAxis) {                    int currentFieldAxisCoordinate = myLocator.getAxisIndex(fieldAxis);                    if ( currentFieldAxisCoordinate != LastFieldAxisCoordinate )                    {                       LastFieldAxisCoordinate = currentFieldAxisCoordinate;                       if (CurrentDataFormatIndex == MaxDataFormatIndex)                          CurrentDataFormatIndex = 0;                       else                          CurrentDataFormatIndex++;                    }                 }              }          }           else if ( formatObj instanceof TaggedXMLDataIOStyle )          {              // Tagged case: do nothing          } else {              Log.errorln("ERROR: Completely unknown DATA IO style:"+formatObj.toString()                           +" aborting read!");              System.exit(-1);          }       }