Class CmsXmlSaxWriter

  • 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 CmsXmlSaxWriter
    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
    • Constructor Summary

      Constructors 
      Constructor Description
      CmsXmlSaxWriter()
      Creates a SAX event handler that generates XML / HTML Strings from the events caught using a new StringWriter and the OpenCms default encoding.
      CmsXmlSaxWriter​(java.io.Writer writer)
      Creates a SAX event handler that generates XML / HTML Strings from the events caught using a new StringWriter and the given encoding.
      CmsXmlSaxWriter​(java.io.Writer writer, java.lang.String encoding)
      A SAX event handler that generates XML / HTML Strings from the events caught and writes them to the given Writer.
      CmsXmlSaxWriter​(java.lang.String encoding)
      Creates a SAX event handler that generates XML / HTML Strings from the events caught using a new StringWriter and the given encoding.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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)  
      java.lang.String getEncoding()
      Returns the encoding this XML Sax writer was initialized with.
      java.io.Writer getWriter()
      Returns the Writer where the XML is written to.
      boolean isEscapeUnknownChars()
      Returns true if charactes that are not part of the selected encoding are to be replaced with the HTML { entity representation in the generated output (not in CDATA elements).
      boolean isEscapeXml()
      Returns true if XML entities are to be encoded in the generated output (not in CDATA elements).
      void setEncoding​(java.lang.String value)
      Sets the encoding to use for the generated output.
      void setEscapeUnknownChars​(boolean value)
      If set to true, then charactes that are not part of the selected encoding are to be replaced with the XML { entity representation in the generated output (not in CDATA elements).
      void setEscapeXml​(boolean value)
      If set to true, then XML entities are to be encoded in the generated output (not in CDATA elements).
      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

      • CmsXmlSaxWriter

        public CmsXmlSaxWriter()
        Creates a SAX event handler that generates XML / HTML Strings from the events caught using a new StringWriter and the OpenCms default encoding.

      • CmsXmlSaxWriter

        public CmsXmlSaxWriter​(java.lang.String encoding)
        Creates a SAX event handler that generates XML / HTML Strings from the events caught using a new StringWriter and the given encoding.

        Parameters:
        encoding - the encoding for the XML file
      • CmsXmlSaxWriter

        public CmsXmlSaxWriter​(java.io.Writer writer)
        Creates a SAX event handler that generates XML / HTML Strings from the events caught using a new StringWriter and the given encoding.

        Parameters:
        writer - the Writer to write to output to
      • CmsXmlSaxWriter

        public CmsXmlSaxWriter​(java.io.Writer writer,
                               java.lang.String encoding)
        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
        encoding - the encoding for the XML file
    • Method Detail

      • 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)
      • getEncoding

        public java.lang.String getEncoding()
        Returns the encoding this XML Sax writer was initialized with.

        Returns:
        the encoding this XML Sax writer was initialized with
      • getWriter

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

        Returns:
        the Writer where the XML is written to
      • isEscapeUnknownChars

        public boolean isEscapeUnknownChars()
        Returns true if charactes that are not part of the selected encoding are to be replaced with the HTML { entity representation in the generated output (not in CDATA elements).

        Returns:
        true if charactes that are not part of the selected encoding are to be replaced with the HTML entity representation
      • 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)
      • setEncoding

        public void setEncoding​(java.lang.String value)
        Sets the encoding to use for the generated output.

        Parameters:
        value - the encoding to use for the generated output
      • setEscapeUnknownChars

        public void setEscapeUnknownChars​(boolean value)
        If set to true, then charactes that are not part of the selected encoding are to be replaced with the XML { entity representation in the generated output (not in CDATA elements).

        Parameters:
        value - indicates to escape unknown characters with XML entities or not
      • 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
      • 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)
                      throws org.xml.sax.SAXException
        Specified by:
        startDTD in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
        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)