Package com.googlecode.htmlcompressor.compressor

## Class XmlCompressor

- java.lang.Object
- - com.googlecode.htmlcompressor.compressor.XmlCompressor

- All Implemented Interfaces:
    `Compressor`

      public class XmlCompressor
      extends Object
      implements Compressor

  Class that compresses given XML source by removing comments, extra spaces and line breaks while preserving content within CDATA blocks.
  Author:
    Sergiy Kovalchuk

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected static Pattern` | `cdataPattern` | The Constant cdataPattern.
    `protected static Pattern` | `commentPattern` | The Constant commentPattern.
    `protected static Pattern` | `intertagPattern` | The Constant intertagPattern.
    `protected static Pattern` | `multispacePattern` | The Constant multispacePattern.
    `protected static Pattern` | `tagEndSpacePattern` | The Constant tagEndSpacePattern.
    `protected static Pattern` | `tagPropertyPattern` | The Constant tagPropertyPattern.
    `protected static String` | `TEMP_CD_DATA_BLOCK` | The Constant tempCdataBlock.
    `protected static Pattern` | `tempCdataPattern` | The Constant tempCdataPattern.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `XmlCompressor()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `compress​(String xml)` | The main method that compresses given XML source and returns compressed result.
    `boolean` | `isEnabled()` | Returns `true` if compression is enabled.
    `boolean` | `isRemoveComments()` | Returns `true` if all XML comments will be removed.
    `boolean` | `isRemoveIntertagSpaces()` | Returns `true` if all inter-tag whitespace characters will be removed.
    `protected String` | `preserveBlocks​(String xml, List<String> cdataBlocks)` | Preserve blocks.
    `protected String` | `processXml​(String xml)` | Process xml.
    `protected String` | `removeComments​(String xml)` | Removes the comments.
    `protected String` | `removeIntertagSpaces​(String xml)` | Removes the intertag spaces.
    `protected String` | `removeSpacesInsideTags​(String xml)` | Removes the spaces inside tags.
    `protected String` | `returnBlocks​(String xml, List<String> cdataBlocks)` | Return blocks.
    `void` | `setEnabled​(boolean enabled)` | If set to `false` all compression will be bypassed.
    `void` | `setRemoveComments​(boolean removeComments)` | If set to `true` all XML comments will be removed.
    `void` | `setRemoveIntertagSpaces​(boolean removeIntertagSpaces)` | If set to `true` all inter-tag whitespace characters will be removed.

    - ### Methods inherited from class java.lang.Object

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

- - ### Field Detail

    - #### TEMP_CD_DATA_BLOCK

          protected static final String TEMP_CD_DATA_BLOCK

      The Constant tempCdataBlock.
      See Also:
        Constant Field Values

    - #### cdataPattern

          protected static final Pattern cdataPattern

      The Constant cdataPattern.

    - #### commentPattern

          protected static final Pattern commentPattern

      The Constant commentPattern.

    - #### intertagPattern

          protected static final Pattern intertagPattern

      The Constant intertagPattern.

    - #### tagEndSpacePattern

          protected static final Pattern tagEndSpacePattern

      The Constant tagEndSpacePattern.

    - #### multispacePattern

          protected static final Pattern multispacePattern

      The Constant multispacePattern.

    - #### tagPropertyPattern

          protected static final Pattern tagPropertyPattern

      The Constant tagPropertyPattern.

    - #### tempCdataPattern

          protected static final Pattern tempCdataPattern

      The Constant tempCdataPattern.

  - ### Constructor Detail

    - #### XmlCompressor

          public XmlCompressor()

  - ### Method Detail

    - #### compress

          public String compress​(String xml)

      The main method that compresses given XML source and returns compressed result.
      Specified by:
        `compress` in interface `Compressor`
      Parameters:
        `xml` - XML content to compress
      Returns:
        compressed content.

    - #### preserveBlocks

          protected String preserveBlocks​(String xml,
                                          List<String> cdataBlocks)

      Preserve blocks.
      Parameters:
        `xml` - the xml
        `cdataBlocks` - the cdata blocks
      Returns:
        the string

    - #### returnBlocks

          protected String returnBlocks​(String xml,
                                        List<String> cdataBlocks)

      Return blocks.
      Parameters:
        `xml` - the xml
        `cdataBlocks` - the cdata blocks
      Returns:
        the string

    - #### processXml

          protected String processXml​(String xml)

      Process xml.
      Parameters:
        `xml` - the xml
      Returns:
        the string

    - #### removeSpacesInsideTags

          protected String removeSpacesInsideTags​(String xml)

      Removes the spaces inside tags.
      Parameters:
        `xml` - the xml
      Returns:
        the string

    - #### removeIntertagSpaces

          protected String removeIntertagSpaces​(String xml)

      Removes the intertag spaces.
      Parameters:
        `xml` - the xml
      Returns:
        the string

    - #### removeComments

          protected String removeComments​(String xml)

      Removes the comments.
      Parameters:
        `xml` - the xml
      Returns:
        the string

    - #### isEnabled

          public boolean isEnabled()

      Returns `true` if compression is enabled.
      Returns:
        `true` if compression is enabled.

    - #### setEnabled

          public void setEnabled​(boolean enabled)

      If set to `false` all compression will be bypassed. Might be useful for testing purposes. Default is `true`.
      Parameters:
        `enabled` - set `false` to bypass all compression

    - #### isRemoveComments

          public boolean isRemoveComments()

      Returns `true` if all XML comments will be removed.
      Returns:
        `true` if all XML comments will be removed

    - #### setRemoveComments

          public void setRemoveComments​(boolean removeComments)

      If set to `true` all XML comments will be removed. Default is `true`.
      Parameters:
        `removeComments` - set `true` to remove all XML comments

    - #### isRemoveIntertagSpaces

          public boolean isRemoveIntertagSpaces()

      Returns `true` if all inter-tag whitespace characters will be removed.
      Returns:
        `true` if all inter-tag whitespace characters will be removed.

    - #### setRemoveIntertagSpaces

          public void setRemoveIntertagSpaces​(boolean removeIntertagSpaces)

      If set to `true` all inter-tag whitespace characters will be removed. Default is `true`.
      Parameters:
        `removeIntertagSpaces` - set `true` to remove all inter-tag whitespace characters