Class TextAndCSVParser

All Implemented Interfaces:
Serializable, Parser

public class TextAndCSVParser extends AbstractEncodingDetectorParser
Unless the TikaCoreProperties.CONTENT_TYPE_USER_OVERRIDE is set, this parser tries to assess whether the file is a text file, csv or tsv. If the detector detects regularity in column numbers and/or encapsulated cells, this parser will apply the CSVParser; otherwise, it will treat the contents as text.

If there is a csv parse exception during detection, the parser sets the HttpHeaders.CONTENT_TYPE to MediaType.TEXT_PLAIN and treats the file as MediaType.TEXT_PLAIN.

If there is a csv parse exception during the parse, the parser writes what's left of the stream as if it were text and then throws an exception. As of this writing, the content that was buffered by the underlying CSVParser is lost.

See Also:
  • Field Details

    • DELIMITER_PROPERTY

      public static final Property DELIMITER_PROPERTY
    • NUM_COLUMNS

      public static final Property NUM_COLUMNS
      If the file is detected as a csv/tsv, this is the number of columns in the first row.
    • NUM_ROWS

      public static final Property NUM_ROWS
      If the file is detected as a csv/tsv, this is the number of rows if the file is successfully read (e.g. no encapsulation exceptions, etc).
  • Constructor Details

    • TextAndCSVParser

      public TextAndCSVParser()
    • TextAndCSVParser

      public TextAndCSVParser(EncodingDetector encodingDetector)
  • Method Details

    • getSupportedTypes

      public Set<MediaType> getSupportedTypes(ParseContext context)
      Description copied from interface: Parser
      Returns the set of media types supported by this parser when used with the given parse context.
      Parameters:
      context - parse context
      Returns:
      immutable set of media types
    • parse

      public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException
      Description copied from interface: Parser
      Parses a document stream into a sequence of XHTML SAX events. Fills in related document metadata in the given metadata object.

      The given document stream is consumed but not closed by this method. The responsibility to close the stream remains on the caller.

      Information about the parsing context can be passed in the context parameter. See the parser implementations for the kinds of context information they expect.

      Parameters:
      stream - the document stream (input)
      handler - handler for the XHTML SAX events (output)
      metadata - document metadata (input and output)
      context - parse context
      Throws:
      IOException - if the document stream could not be read
      SAXException - if the SAX events could not be processed
      TikaException - if the document could not be parsed