com.raritantechnologies.xml.sax.filter
Class ProgrammableSAXFilter

java.lang.Object
  extended byorg.xml.sax.helpers.XMLFilterImpl
      extended bycom.raritantechnologies.xml.sax.filter.ProgrammableSAXFilter
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, IConfigurable, org.xml.sax.XMLFilter, org.xml.sax.XMLReader

public class ProgrammableSAXFilter
extends org.xml.sax.helpers.XMLFilterImpl
implements IConfigurable

A SAX filter that can be programmed to add/modify/delete elements/attributes/ or character data in an XML SAX stream. The filter monitors current path, maintains state for eliminated tags. (i.e. keeps listening for endElement before continuing to pass SAX events through).

This filter supports simple or forward-only deletion: based on tag structure. For more complex (backward or deferred) deletion, use the SAXDeleteFilter which can delete based on "deep" structure.

XML Configuration Template:
   <ProgrammableSAXFilter>
     <!-- One of more ElementRemovers -->
     <ElementRemover class="[ class of com.raritantechnologies.xml.sax.filter.ElementRemover ]" >
     </ElementRemover>

   </ProgrammableSAXFilter>
 

Developed by Raritan Technologies .

Author:
Ted Sullivan

Constructor Summary
ProgrammableSAXFilter()
           
ProgrammableSAXFilter(org.xml.sax.XMLReader reader)
           
 
Method Summary
 void addElementModifier(ElementModifier elementModifier)
          Adds an ElementModifier - an object than can change attributes or character data within a tag.
 void addElementRemover(ElementComparator elementRemover)
          This filter supports simple deletion: based on tag.
 void addElementReplacer(ElementReplacer replacer)
           
 void addListener(org.xml.sax.ContentHandler listener)
           
 void characters(char[] ch, int start, int length)
           
 void endDocument()
           
 void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)
           
 void endPrefixMapping(java.lang.String prefix)
           
 java.util.List getElementModifiers()
           
 void ignorableWhitespace(char[] ch, int start, int length)
           
 void initialize(org.w3c.dom.Element elem)
          Initializes the object from an XML tag or element.
 void processingInstruction(java.lang.String target, java.lang.String data)
           
 void skippedEntity(java.lang.String name)
           
 void startDocument()
           
 void startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attrs)
           
 void startPrefixMapping(java.lang.String prefix, java.lang.String uri)
           
 
Methods inherited from class org.xml.sax.helpers.XMLFilterImpl
error, fatalError, getContentHandler, getDTDHandler, getEntityResolver, getErrorHandler, getFeature, getParent, getProperty, notationDecl, parse, parse, resolveEntity, setContentHandler, setDocumentLocator, setDTDHandler, setEntityResolver, setErrorHandler, setFeature, setParent, setProperty, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ProgrammableSAXFilter

public ProgrammableSAXFilter()

ProgrammableSAXFilter

public ProgrammableSAXFilter(org.xml.sax.XMLReader reader)
Method Detail

addElementRemover

public void addElementRemover(ElementComparator elementRemover)
This filter supports simple deletion: based on tag. This method allows tag detectors (ElementComparator) to be plugged in.

Parameters:
elementRemover - ElementComparator used to detect tags that should be removed from the XML stream.

addElementReplacer

public void addElementReplacer(ElementReplacer replacer)

addElementModifier

public void addElementModifier(ElementModifier elementModifier)
Adds an ElementModifier - an object than can change attributes or character data within a tag.

Parameters:
elementModifier - Modifier to be used to change the contents (including adding child tags)

getElementModifiers

public java.util.List getElementModifiers()

addListener

public void addListener(org.xml.sax.ContentHandler listener)

startElement

public void startElement(java.lang.String uri,
                         java.lang.String localName,
                         java.lang.String qName,
                         org.xml.sax.Attributes attrs)
                  throws org.xml.sax.SAXException
Specified by:
startElement in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

endElement

public void endElement(java.lang.String uri,
                       java.lang.String localName,
                       java.lang.String qName)
                throws org.xml.sax.SAXException
Specified by:
endElement in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws org.xml.sax.SAXException
Specified by:
characters in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

startDocument

public void startDocument()
                   throws org.xml.sax.SAXException
Specified by:
startDocument in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

endDocument

public void endDocument()
                 throws org.xml.sax.SAXException
Specified by:
endDocument in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

startPrefixMapping

public void startPrefixMapping(java.lang.String prefix,
                               java.lang.String uri)
                        throws org.xml.sax.SAXException
Specified by:
startPrefixMapping in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

endPrefixMapping

public void endPrefixMapping(java.lang.String prefix)
                      throws org.xml.sax.SAXException
Specified by:
endPrefixMapping in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
                         throws org.xml.sax.SAXException
Specified by:
ignorableWhitespace in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

processingInstruction

public void processingInstruction(java.lang.String target,
                                  java.lang.String data)
                           throws org.xml.sax.SAXException
Specified by:
processingInstruction in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

skippedEntity

public void skippedEntity(java.lang.String name)
                   throws org.xml.sax.SAXException
Specified by:
skippedEntity in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

initialize

public void initialize(org.w3c.dom.Element elem)
Description copied from interface: IConfigurable
Initializes the object from an XML tag or element. This method is called by the Framework as part of the application initializtion. see ConfigurationManager, XMLConfigurationManager, XMLSearchFieldMapFactory, XMLSearchSourceFactory. Configurable objects that are owned or contained by other configurable objects will be initialized in by the parent object.

Specified by:
initialize in interface IConfigurable