private    void    parseRow( int rowNumber ) throws Exception
    {
        Element         rawRow = (Element) _rawRows.item( rowNumber );
        int                 columnCount = getColumnCount();
        
        _currentRow = new String[ columnCount ];

        for ( int i = 0; i < columnCount; i++ )
        {
            // first look for an attribute by the column name
            String      columnName = getColumnName( i + 1 );
            String      contents = rawRow.getAttribute( columnName );

            // if there is not attribute by that name, then look for descendent elements by
            // that name. concatenate them all.
            if ( (contents == null) ||  "".equals( contents ) )
            {
                NodeList    children = rawRow.getElementsByTagName( columnName );

                if ( (children != null) && (children.getLength() > 0) )
                {
                    int                 childCount = children.getLength();
                    StringBuffer    buffer = new StringBuffer();

                    for ( int j = 0; j < childCount; j++ )
                    {
                        Element     child = (Element) children.item( j );
                        // separate values with spaces.
                        if (j != 0)
                            buffer.append(" ");
                        buffer.append( squeezeText( child ) );
                    }
                    contents = buffer.toString();
                }
            }

            _currentRow[ i ] = contents;
        }
    }