com.alkacon.diff
Class XmlSaxWriter

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by com.alkacon.diff.XmlSaxWriter
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, org.xml.sax.ext.LexicalHandler

public class XmlSaxWriter
extends org.xml.sax.helpers.DefaultHandler
implements org.xml.sax.ext.LexicalHandler

Simple SAX event handler that generates a XML (or HTML) file from the events caught.

This can be used for writing large XML files where keeping a DOM structure in memory might cause out-of-memory issues, like e.g. when writing the OpenCms export files.

It can also be used if a ContentHandler is needed that should generate a XML / HTML file from a series of SAX events.

Since:
6.0.0
Version:
$Revision: 1.7 $
Author:
Alexander Kandzior

Constructor Summary
XmlSaxWriter(java.io.Writer writer)
          A SAX event handler that generates XML / HTML Strings from the events caught and writes them to the given Writer.
 
Method Summary
 void characters(char[] buf, int offset, int len)
           
 void comment(char[] ch, int start, int length)
           
 void endCDATA()
           
 void endDocument()
           
 void endDTD()
           
 void endElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qualifiedName)
           
 void endEntity(java.lang.String name)
           
static java.lang.String escapeXml(java.lang.String source)
          Escapes a String so it may be printed as text content or attribute value in a HTML page or an XML file.
 java.io.Writer getWriter()
          Returns the Writer where the XML is written to.
 boolean isEscapeXml()
          Returns true if XML entities are to be encoded in the generated output (not in CDATA elements).
 boolean isIndentXml()
          Returns true if the generated XML is to be indented using newlines and tabs in the generated output.
 void setEscapeXml(boolean value)
          If set to true, then XML entities are to be encoded in the generated output (not in CDATA elements).
 void setIndentXml(boolean value)
          If set to true, then the generated XML is to be indented using newlines and tabs in the generated output.
 void startCDATA()
           
 void startDocument()
           
 void startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
           
 void startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qualifiedName, org.xml.sax.Attributes attributes)
           
 void startEntity(java.lang.String name)
           
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startPrefixMapping, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XmlSaxWriter

public XmlSaxWriter(java.io.Writer writer)
A SAX event handler that generates XML / HTML Strings from the events caught and writes them to the given Writer.

Parameters:
writer - the Writer to write to output to
Method Detail

escapeXml

public static java.lang.String escapeXml(java.lang.String source)
Escapes a String so it may be printed as text content or attribute value in a HTML page or an XML file.

This method replaces the following characters in a String:

Parameters:
source - the string to escape
Returns:
the escaped string

characters

public void characters(char[] buf,
                       int offset,
                       int len)
                throws org.xml.sax.SAXException
Specified by:
characters in interface org.xml.sax.ContentHandler
Overrides:
characters in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.characters(char[], int, int)

comment

public void comment(char[] ch,
                    int start,
                    int length)
Specified by:
comment in interface org.xml.sax.ext.LexicalHandler
See Also:
LexicalHandler.comment(char[], int, int)

endCDATA

public void endCDATA()
              throws org.xml.sax.SAXException
Specified by:
endCDATA in interface org.xml.sax.ext.LexicalHandler
Throws:
org.xml.sax.SAXException
See Also:
LexicalHandler.endCDATA()

endDocument

public void endDocument()
                 throws org.xml.sax.SAXException
Specified by:
endDocument in interface org.xml.sax.ContentHandler
Overrides:
endDocument in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.endDocument()

endDTD

public void endDTD()
Specified by:
endDTD in interface org.xml.sax.ext.LexicalHandler
See Also:
LexicalHandler.endDTD()

endElement

public void endElement(java.lang.String namespaceURI,
                       java.lang.String localName,
                       java.lang.String qualifiedName)
                throws org.xml.sax.SAXException
Specified by:
endElement in interface org.xml.sax.ContentHandler
Overrides:
endElement in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.endElement(java.lang.String, java.lang.String, java.lang.String)

endEntity

public void endEntity(java.lang.String name)
Specified by:
endEntity in interface org.xml.sax.ext.LexicalHandler
See Also:
LexicalHandler.endEntity(java.lang.String)

getWriter

public java.io.Writer getWriter()
Returns the Writer where the XML is written to.

Returns:
the Writer where the XML is written to

isEscapeXml

public boolean isEscapeXml()
Returns true if XML entities are to be encoded in the generated output (not in CDATA elements).

Returns:
true if XML entities are to be encoded in the generated output (not in CDATA elements)

isIndentXml

public boolean isIndentXml()
Returns true if the generated XML is to be indented using newlines and tabs in the generated output.

Returns:
true if the generated XML is to be indented using newlines and tabs in the generated output

setEscapeXml

public void setEscapeXml(boolean value)
If set to true, then XML entities are to be encoded in the generated output (not in CDATA elements).

Parameters:
value - indicates to to escape characters with XML entities or not

setIndentXml

public void setIndentXml(boolean value)
If set to true, then the generated XML is to be indented using newlines and tabs in the generated output.

Parameters:
value - indicates to to indent the output XML or not

startCDATA

public void startCDATA()
Specified by:
startCDATA in interface org.xml.sax.ext.LexicalHandler
See Also:
LexicalHandler.startCDATA()

startDocument

public void startDocument()
                   throws org.xml.sax.SAXException
Specified by:
startDocument in interface org.xml.sax.ContentHandler
Overrides:
startDocument in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.startDocument()

startDTD

public void startDTD(java.lang.String name,
                     java.lang.String publicId,
                     java.lang.String systemId)
Specified by:
startDTD in interface org.xml.sax.ext.LexicalHandler
See Also:
LexicalHandler.startDTD(java.lang.String, java.lang.String, java.lang.String)

startElement

public void startElement(java.lang.String namespaceURI,
                         java.lang.String localName,
                         java.lang.String qualifiedName,
                         org.xml.sax.Attributes attributes)
                  throws org.xml.sax.SAXException
Specified by:
startElement in interface org.xml.sax.ContentHandler
Overrides:
startElement in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)

startEntity

public void startEntity(java.lang.String name)
Specified by:
startEntity in interface org.xml.sax.ext.LexicalHandler
See Also:
LexicalHandler.startEntity(java.lang.String)


Copyright © 2005-2011. All Rights Reserved.