net.sf.fikin.xml.sax
Class CompletingBufferHandler
java.lang.Object
   net.sf.fikin.xml.sax.BufferHandler
net.sf.fikin.xml.sax.BufferHandler
       net.sf.fikin.xml.sax.CompletingBufferHandler
net.sf.fikin.xml.sax.CompletingBufferHandler
- All Implemented Interfaces: 
- SAXHandler, SAXHandlerAndResolver, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, org.xml.sax.ext.LexicalHandler
- public class CompletingBufferHandler 
- extends BufferHandler
This is a BufferHandler.BufferHandler() but ability to "interpolate" all
 missing end-tags.
 
 
Upon call to emmitComplete(ContentHandler) it will emmit all events 
 buffered so far and then "generate" end-events for all still so far 
 not-matched start-element events.
 
 
Typical schenario is when there is a long running XML-outputting process
 but one would like to have a valid XML document (for consequent processing)
 in meantime.
 
 
Example:
      // start XML processing
      CompletingBufferHandler buf = new CompletingBufferHandler();
      XMLReader reader = XMLReaderFactory.createXMLReader()
      reader.setContentHandler( buf );
      reader.setDTDHandler( buf );
      reader.setEntityResolver( buf );
      reader.parse( input );
      
      // in separate thread (or still in main ome)
      // do periodically:
      buf.emmitComplete( someOutput );
      ...
 
 
 created on Oct 17, 2006
- Since:
- Version:
- $Revision: 1.3 $
- Author:
- fiykov
 
| Method Summary | 
|  void | emmitComplete(org.xml.sax.ContentHandler handler)Emmit buffered SAX events.
 | 
|  void | endDocument()mark that input is over
 | 
 
| Methods inherited from class net.sf.fikin.xml.sax.BufferHandler | 
| characters, characters, clear, comment, comment, emmit, endCDATA, endDTD, endElement, endEntity, endPrefixMapping, error, fatalError, getBuffer, ignorableWhitespace, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startCDATA, startDocument, startDTD, startElement, startEntity, startPrefixMapping, unparsedEntityDecl, warning | 
 
| Methods inherited from class java.lang.Object | 
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
 
CompletingBufferHandler
public CompletingBufferHandler()
emmitComplete
public void emmitComplete(org.xml.sax.ContentHandler handler)
                   throws org.xml.sax.SAXException,
                          java.io.IOException
- Emmit buffered SAX events. 
 All events will be emmited in the receiving order and only difference 
 is that all character array methods (such as character and whitespace) 
 are backed by String-objects.
 
 
 All missing endElement events (matching each startElement event) will
 be generated on fly.
  This way the emmited event flow will always provide
 with well formed xml document.
 
 
- 
- Parameters:
- handler- receiving SAX events. This object is supposed to implement
 any or all of ContentHandler, ErrorHandler, DTDHandler or LexicalHandler 
 interfaces. This method will emmit events only to supported by the handler
 methods.
- Throws:
- org.xml.sax.SAXException
- java.io.IOException
 
endDocument
public void endDocument()
                 throws org.xml.sax.SAXException
- mark that input is over
 
- 
- Specified by:
- endDocumentin interface- org.xml.sax.ContentHandler
- Overrides:
- endDocumentin class- BufferHandler
 
- 
- Throws:
- org.xml.sax.SAXException
 
Copyright © 2003-2007 Nikolay Fiykov. All Rights Reserved.