# Class DalResultXMLFilter

java.lang.Object
org.xml.sax.helpers.XMLFilterImpl
uk.ac.starlink.vo.DalResultXMLFilter

All Implemented Interfaces:
  `ContentHandler, DTDHandler, EntityResolver, ErrorHandler, XMLFilter, XMLReader`

public class DalResultXMLFilter extends XMLFilterImpl
SAX filter which ignores any tables in a VOTable document, except those in a RESOURCE which has type="results". This is suitable for getting the basic table from the result of an SIA or SSA service. Under some circumstances the results can come with a large amount of non-result information (for instance massive numbers of small footprint tables from http://www.stecf.org/hst-vo/hst_ssa?), which can have a very serious impact on performance when trying to build a DOM. So if all you are interested in is the results table which the SIA/SSA protocol says has to be there, using this filter can save a lot of unnecessary processing.

In many cases, you can just use the `getDalResultTable(VOElementFactory, InputSource)` utility method.

See Also:
  - Simple Spectral Access Protocol
  - Simple Image Access Protocol

## Constructor Summary

Constructors
Constructor
Description
`DalResultXMLFilter(XMLReader parent, uk.ac.starlink.votable.Namespacing namespacing)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`characters(char[] ch, int start, int length)`
`void`
`endElement(String namespaceURI, String localName, String qName)`
`void`
`endPrefixMapping(String prefix)`
`static uk.ac.starlink.table.StarTable`
`getDalResultTable(uk.ac.starlink.votable.VOElementFactory vofact, InputSource inSrc)`
Utility method which can return the single results table from a DAL-type response.
`void`
`ignorableWhitespace(char[] ch, int start, int length)`
`static uk.ac.starlink.votable.VOElement`
`parseDalResult(uk.ac.starlink.votable.VOElementFactory vofact, InputSource inSrc)`
Utility method which uses an instance of this class to turn a SAX InputSource into a DOM.
`void`
`processingInstruction(String target, String data)`
`void`
`skippedEntity(String name)`
`void`
`startElement(String namespaceURI, String localName, String qName, Attributes atts)`
`void`
`startPrefixMapping(String prefix, String uri)`

### Methods inherited from class XMLFilterImpl

`endDocument, error, fatalError, getContentHandler, getDTDHandler, getEntityResolver, getErrorHandler, getFeature, getParent, getProperty, notationDecl, parse, parse, resolveEntity, setContentHandler, setDocumentLocator, setDTDHandler, setEntityResolver, setErrorHandler, setFeature, setParent, setProperty, startDocument, unparsedEntityDecl, warning`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface ContentHandler

`declaration`

## Constructor Details

### DalResultXMLFilter

public DalResultXMLFilter(XMLReader parent, uk.ac.starlink.votable.Namespacing namespacing)
Constructor.

Parameters:
  `parent` - parent SAX reader
  `namespacing` - VOTable namespacing policy to employ

## Method Details

### startElement

public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException

Specified by:
  `startElement` in interface `ContentHandler`
Overrides:
  `startElement` in class `XMLFilterImpl`
Throws:
  `SAXException`

### endElement

public void endElement(String namespaceURI, String localName, String qName) throws SAXException

Specified by:
  `endElement` in interface `ContentHandler`
Overrides:
  `endElement` in class `XMLFilterImpl`
Throws:
  `SAXException`

### startPrefixMapping

public void startPrefixMapping(String prefix, String uri) throws SAXException

Specified by:
  `startPrefixMapping` in interface `ContentHandler`
Overrides:
  `startPrefixMapping` in class `XMLFilterImpl`
Throws:
  `SAXException`

### endPrefixMapping

public void endPrefixMapping(String prefix) throws SAXException

Specified by:
  `endPrefixMapping` in interface `ContentHandler`
Overrides:
  `endPrefixMapping` in class `XMLFilterImpl`
Throws:
  `SAXException`

### characters

public void characters(char[] ch, int start, int length) throws SAXException

Specified by:
  `characters` in interface `ContentHandler`
Overrides:
  `characters` in class `XMLFilterImpl`
Throws:
  `SAXException`

### ignorableWhitespace

public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException

Specified by:
  `ignorableWhitespace` in interface `ContentHandler`
Overrides:
  `ignorableWhitespace` in class `XMLFilterImpl`
Throws:
  `SAXException`

### processingInstruction

public void processingInstruction(String target, String data) throws SAXException

Specified by:
  `processingInstruction` in interface `ContentHandler`
Overrides:
  `processingInstruction` in class `XMLFilterImpl`
Throws:
  `SAXException`

### skippedEntity

public void skippedEntity(String name) throws SAXException

Specified by:
  `skippedEntity` in interface `ContentHandler`
Overrides:
  `skippedEntity` in class `XMLFilterImpl`
Throws:
  `SAXException`

### parseDalResult

public static uk.ac.starlink.votable.VOElement parseDalResult(uk.ac.starlink.votable.VOElementFactory vofact, InputSource inSrc) throws IOException
Utility method which uses an instance of this class to turn a SAX InputSource into a DOM. The DOM will lack non-results tables.

Parameters:
  `vofact` - factory which can generate VOTable DOMs
  `inSrc` - source of the SAX stream
Throws:
  `IOException`

### getDalResultTable

public static uk.ac.starlink.table.StarTable getDalResultTable(uk.ac.starlink.votable.VOElementFactory vofact, InputSource inSrc) throws IOException
Utility method which can return the single results table from a DAL-type response. This is the single table within the RESOURCE element marked with type="results", as described by the SIA and SSA standards. The QUERY_STATUS INFO element is checked; in case of ERROR, an exception is thrown.

Parameters:
  `vofact` - factory which can generate VOTable DOMs
  `inSrc` - source of the SAX stream
Returns:
  result table, never null
Throws:
  `IOException` - in case of error, including an ERROR-valued QUERY_STATUS in the response, or no suitable table found