Class XMLUtil


  • public class XMLUtil
    extends java.lang.Object
    The XMLUtil class provides miscellaneous XML utilities.
    • Constructor Summary

      Constructors 
      Constructor Description
      XMLUtil()
      XMLUtil constructor comment.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static javax.xml.parsers.SAXParser createSAXParser()
      Gets new instance of the SAXParser class and sets standard features.
      static java.lang.String detectXmlFileEncoding​(java.io.File xmlFile)
      Attempts to detect file encoding of a given XML file by analyzing it's first characters.
      static boolean isValidXmlFile​(java.io.File xmlFile)
      Tries to parse a given XML file using SAX parser.
      static void printAllXMLElements​(java.util.Properties elements, java.io.PrintWriter oWriter, int level)
      Prints entries of a given Properties object as XML elements to a given PrintWriter, maintaining a given indentation level.
      static void printAllXMLElements​(java.util.Properties elements, java.lang.String[] tagOrder, java.io.PrintWriter oWriter, int level)
      Prints entries of a given Properties object as XML elements to a given PrintWriter, maintaining a specified tag order and a given indentation level.
      static void printAllXMLElements​(java.util.Properties elements, java.lang.String valueDelimiter, java.lang.String[] tagOrder, java.io.PrintWriter oWriter, int level)
      Prints entries of a given Properties object as XML elements to a given PrintWriter, maintaining a specified tag order and a given indentation level.
      static void printError​(java.lang.String type, org.xml.sax.SAXParseException ex)
      Prints SAX error message.
      static void printXMLElement​(java.lang.String tag, java.lang.String elemValue, boolean putInCdataSection, java.io.PrintWriter oWriter, int level)
      Prints a given XML element, which contains only a given string value, to a given PrintWriter, maintaining a given indentation level.
      static void printXMLElement​(java.lang.String tag, java.lang.String elemValue, java.io.PrintWriter oWriter, int level)
      Prints a given XML element, which contains only a given string value, to a given PrintWriter, maintaining a given indentation level.
      static void printXMLElement​(java.lang.String tag, java.util.Properties attributes, java.io.PrintWriter oWriter, int level)
      Prints a given XML element, which contains only given attributes, to a given PrintWriter, maintaining a given indentation level.
      static void printXMLElement​(java.lang.String tag, java.util.Properties attributes, java.lang.String elemValue, boolean putInCdataSection, java.io.PrintWriter oWriter, int level)
      Prints a given XML element, which contains given attributes and a given string value, to a given PrintWriter, maintaining a given indentation level.
      static void printXMLElement​(java.lang.String tag, java.util.Properties attributes, java.lang.String elemValue, boolean putInCdataSection, java.io.PrintWriter oWriter, int level, boolean useNewLine4Value)
      Prints a given XML element, which contains given attributes and a given string value, to a given PrintWriter, maintaining a given indentation level.
      static void printXMLElement​(java.lang.String tag, java.util.Properties attributes, java.lang.String elemValue, java.io.PrintWriter oWriter, int level)
      Prints a given XML element, which contains given attributes and a given string value, to a given PrintWriter, maintaining a given indentation level.
      static void printXMLElements​(java.lang.String tag, java.lang.String elemValue, java.lang.String valueDelimiter, java.io.PrintWriter oWriter, int level)
      Prints multiple values of a given XML element, separated with a specified delimiter, to a given PrintWriter, maintaining a given indentation level.
      static void printXMLElementValue​(java.lang.String elemValue, boolean putInCdataSection, java.io.PrintWriter oWriter, int level)
      Prints a given element value to a given PrintWriter, maintaining a given indentation level.
      static void printXMLElementValue​(java.lang.String elemValue, java.io.PrintWriter oWriter, int level)
      Prints a given element value to a given PrintWriter, maintaining a given indentation level.
      static void printXMLHeader​(java.lang.String encoding, java.io.PrintWriter oWriter)
      Prints standard XML 1.0 header with a specified encoding to a given PrintStream.
      static void printXMLTag​(java.lang.String tag, java.io.PrintWriter oWriter, boolean tagEnd, int level)
      Prints a given XML tag to a given PrintWriter, maintaining a given indentation level.
      static void printXMLTag​(java.lang.String tag, java.util.Properties attributes, java.io.PrintWriter oWriter, boolean tagEnd, int level)
      Prints a given XML tag with given element attributes to a given PrintWriter, maintaining a given indentation level.
      private static java.lang.String xmlEscape​(java.lang.String value)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • XML_ENCODING_TAG

        public static final java.lang.String XML_ENCODING_TAG
        See Also:
        Constant Field Values
      • CDATA_SECTION_BEG

        public static final java.lang.String CDATA_SECTION_BEG
        See Also:
        Constant Field Values
      • CDATA_SECTION_END

        public static final java.lang.String CDATA_SECTION_END
        See Also:
        Constant Field Values
      • NAMESPACES_FEATURE_ID

        public static final java.lang.String NAMESPACES_FEATURE_ID
        XML parser feature ids
        See Also:
        Constant Field Values
      • NAMESPACE_PREFIXES_FEATURE_ID

        public static final java.lang.String NAMESPACE_PREFIXES_FEATURE_ID
        See Also:
        Constant Field Values
      • VALIDATION_FEATURE_ID

        public static final java.lang.String VALIDATION_FEATURE_ID
        See Also:
        Constant Field Values
      • SCHEMA_VALIDATION_FEATURE_ID

        public static final java.lang.String SCHEMA_VALIDATION_FEATURE_ID
        See Also:
        Constant Field Values
      • SCHEMA_FULL_CHECKING_FEATURE_ID

        public static final java.lang.String SCHEMA_FULL_CHECKING_FEATURE_ID
        See Also:
        Constant Field Values
      • DYNAMIC_VALIDATION_FEATURE_ID

        public static final java.lang.String DYNAMIC_VALIDATION_FEATURE_ID
        See Also:
        Constant Field Values
      • DEFAULT_NAMESPACE_PREFIXES

        protected static final boolean DEFAULT_NAMESPACE_PREFIXES
        See Also:
        Constant Field Values
      • DEFAULT_SCHEMA_VALIDATION

        protected static final boolean DEFAULT_SCHEMA_VALIDATION
        See Also:
        Constant Field Values
      • DEFAULT_SCHEMA_FULL_CHECKING

        protected static final boolean DEFAULT_SCHEMA_FULL_CHECKING
        See Also:
        Constant Field Values
      • DEFAULT_DYNAMIC_VALIDATION

        protected static final boolean DEFAULT_DYNAMIC_VALIDATION
        See Also:
        Constant Field Values
      • FIRST_XML_CHARS

        protected static final java.lang.String FIRST_XML_CHARS
        See Also:
        Constant Field Values
    • Constructor Detail

      • XMLUtil

        public XMLUtil()
        XMLUtil constructor comment.
    • Method Detail

      • createSAXParser

        public static javax.xml.parsers.SAXParser createSAXParser()
                                                           throws org.xml.sax.SAXException
        Gets new instance of the SAXParser class and sets standard features.
        Returns:
        The new instance of the SAXParser class.
        Throws:
        org.xml.sax.SAXException - if any parser exception occurred.
      • detectXmlFileEncoding

        public static java.lang.String detectXmlFileEncoding​(java.io.File xmlFile)
                                                      throws java.io.IOException
        Attempts to detect file encoding of a given XML file by analyzing it's first characters. This method can recognize the following 2 standard encodings: UTF-8 (ASCII) and UTF-16 (LE and BE). If the given XML file is not valid or its encoding cannot be recognized, the method returns null, otherwise it returns the detected encoding name. For more on UTF encodings and its signatures see FAQ - UTF and BOM.
        Parameters:
        xmlFile - The given XML file.
        Returns:
        Detected XML file encoding name or null, if the file encoding cannot be recognized or the file is not a valid XML file.
        Throws:
        java.io.IOException - If the given file cannot be read.
      • isValidXmlFile

        public static boolean isValidXmlFile​(java.io.File xmlFile)
                                      throws java.io.IOException
        Tries to parse a given XML file using SAX parser. Returns true, if the parser does not encounter fatal error, otherwise returns false.
        Parameters:
        xmlFile - The given XML file to be tested.
        Returns:
        true, if the given XML file can be parsed, false otherwise.
        Throws:
        java.io.IOException - If the given file cannot be read.
      • printError

        public static void printError​(java.lang.String type,
                                      org.xml.sax.SAXParseException ex)
        Prints SAX error message.
        Parameters:
        type - type
        ex - exception
      • printAllXMLElements

        public static void printAllXMLElements​(java.util.Properties elements,
                                               java.io.PrintWriter oWriter,
                                               int level)
                                        throws java.io.IOException
        Prints entries of a given Properties object as XML elements to a given PrintWriter, maintaining a given indentation level.
        Parameters:
        elements - The given Properties object.
        oWriter - The given PrintWriter object.
        level - The given indentation level.
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printAllXMLElements

        public static void printAllXMLElements​(java.util.Properties elements,
                                               java.lang.String valueDelimiter,
                                               java.lang.String[] tagOrder,
                                               java.io.PrintWriter oWriter,
                                               int level)
                                        throws java.io.IOException
        Prints entries of a given Properties object as XML elements to a given PrintWriter, maintaining a specified tag order and a given indentation level. Some elements may contain multiple values delimited by a specified value delimiter. Inserts new line after each printed element.
        Parameters:
        elements - The given Properties object.
        valueDelimiter - The specified value delimiter for multi-valued elements.
        tagOrder - The String array that specifies the tag order.
        oWriter - The given PrintWriter object.
        level - The given indentation level.
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printAllXMLElements

        public static void printAllXMLElements​(java.util.Properties elements,
                                               java.lang.String[] tagOrder,
                                               java.io.PrintWriter oWriter,
                                               int level)
                                        throws java.io.IOException
        Prints entries of a given Properties object as XML elements to a given PrintWriter, maintaining a specified tag order and a given indentation level.
        Parameters:
        elements - The given Properties object.
        tagOrder - The String array that specifies the tag order.
        oWriter - The given PrintWriter object.
        level - The given indentation level.
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLElement

        public static void printXMLElement​(java.lang.String tag,
                                           java.util.Properties attributes,
                                           java.io.PrintWriter oWriter,
                                           int level)
                                    throws java.io.IOException
        Prints a given XML element, which contains only given attributes, to a given PrintWriter, maintaining a given indentation level.
        Parameters:
        tag - The given XML tag.
        attributes - The given XML element attributes.
        oWriter - The given PrintWriter object.
        level - The given indentation level (number of marginal '\t' symbols).
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLElement

        public static void printXMLElement​(java.lang.String tag,
                                           java.util.Properties attributes,
                                           java.lang.String elemValue,
                                           java.io.PrintWriter oWriter,
                                           int level)
                                    throws java.io.IOException
        Prints a given XML element, which contains given attributes and a given string value, to a given PrintWriter, maintaining a given indentation level. The string element value (if exists) is printed 'as is' - without a CDATA section.
        Parameters:
        tag - The given XML element tag.
        attributes - The given XML element attributes.
        elemValue - The given XML element value.
        oWriter - The given PrintWriter object.
        level - The given indentation level (number of marginal '\t' symbols).
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLElement

        public static void printXMLElement​(java.lang.String tag,
                                           java.util.Properties attributes,
                                           java.lang.String elemValue,
                                           boolean putInCdataSection,
                                           java.io.PrintWriter oWriter,
                                           int level)
                                    throws java.io.IOException
        Prints a given XML element, which contains given attributes and a given string value, to a given PrintWriter, maintaining a given indentation level. The string element value (if exists) is printed within or without the CDATA section, depending on a given boolean flag value.
        Parameters:
        tag - The given XML element tag.
        attributes - The given XML element tag.
        elemValue - The given XML element value.
        putInCdataSection - If true, puts the element value in the CDATA section, otherwise prints the element value without the CDATA section.
        oWriter - The given PrintWriter object.
        level - The given indentation level (number of marginal '\t' symbols).
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLElement

        public static void printXMLElement​(java.lang.String tag,
                                           java.util.Properties attributes,
                                           java.lang.String elemValue,
                                           boolean putInCdataSection,
                                           java.io.PrintWriter oWriter,
                                           int level,
                                           boolean useNewLine4Value)
                                    throws java.io.IOException
        Prints a given XML element, which contains given attributes and a given string value, to a given PrintWriter, maintaining a given indentation level. The string element value (if exists) may be printed inside a CDATA section, depending on the value of a given 'CDATA' boolean flag. The element value may be printed on the same line as the element tags, or on a new line, depending on the value of a given 'new-line' boolean flag.
        Parameters:
        tag - The given XML element tag.
        attributes - The given XML element attributes.
        elemValue - The given XML element value.
        putInCdataSection - If true, the given element value is printed inside the CDATA section, otherwise it's printed 'as is'.
        oWriter - The given PrintWriter object.
        level - The given indentation level (number of marginal '\t' symbols).
        useNewLine4Value - If true, the given element value is printed on a new line, otherwise it's printed on the same line as the element tags.
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLElement

        public static void printXMLElement​(java.lang.String tag,
                                           java.lang.String elemValue,
                                           java.io.PrintWriter oWriter,
                                           int level)
                                    throws java.io.IOException
        Prints a given XML element, which contains only a given string value, to a given PrintWriter, maintaining a given indentation level. The string element value is printed 'as-is' without the CDATA block.
        Parameters:
        tag - The given XML tag.
        elemValue - The given XML element value.
        oWriter - The given PrintWriter object.
        level - The given indentation level (number of marginal '\t' symbols).
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLElement

        public static void printXMLElement​(java.lang.String tag,
                                           java.lang.String elemValue,
                                           boolean putInCdataSection,
                                           java.io.PrintWriter oWriter,
                                           int level)
                                    throws java.io.IOException
        Prints a given XML element, which contains only a given string value, to a given PrintWriter, maintaining a given indentation level. The string element value (if exists) is put into the CDATA block, if a given boolean flag is true.
        Parameters:
        tag - The given XML tag.
        elemValue - The given XML element value.
        putInCdataSection - If true, puts the element value in the CDATA section, otherwise prints the element value without the CDATA section.
        oWriter - The given PrintWriter object.
        level - The given indentation level (number of marginal '\t' symbols).
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLElements

        public static void printXMLElements​(java.lang.String tag,
                                            java.lang.String elemValue,
                                            java.lang.String valueDelimiter,
                                            java.io.PrintWriter oWriter,
                                            int level)
                                     throws java.io.IOException
        Prints multiple values of a given XML element, separated with a specified delimiter, to a given PrintWriter, maintaining a given indentation level. Inserts new line after each printed element value.
        Parameters:
        tag - The given XML element tag.
        elemValue - The given XML element values (multi-value), separated with the given delimiter.
        valueDelimiter - The given delimiter for multi-value elements.
        oWriter - The given PrintWriter object.
        level - The given indentation level (number of marginal '\t' symbols).
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLElementValue

        public static void printXMLElementValue​(java.lang.String elemValue,
                                                java.io.PrintWriter oWriter,
                                                int level)
                                         throws java.io.IOException
        Prints a given element value to a given PrintWriter, maintaining a given indentation level. By default, prints the element value 'as is' - not using the CDATA section.
        Parameters:
        elemValue - The given element value.
        oWriter - The given PrintWriter object.
        level - The given indentation level.
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLElementValue

        public static void printXMLElementValue​(java.lang.String elemValue,
                                                boolean putInCdataSection,
                                                java.io.PrintWriter oWriter,
                                                int level)
                                         throws java.io.IOException
        Prints a given element value to a given PrintWriter, maintaining a given indentation level. If a given boolean 'CDATA' flag is true, puts the element value in the CDATA section, otherwise prints the element value 'as is'.
        Parameters:
        elemValue - The given element value.
        putInCdataSection - If true, puts the element value in the CDATA section, otherwise prints the element value without the CDATA section.
        oWriter - The given PrintWriter object.
        level - The given indentation level.
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLHeader

        public static void printXMLHeader​(java.lang.String encoding,
                                          java.io.PrintWriter oWriter)
                                   throws java.io.IOException
        Prints standard XML 1.0 header with a specified encoding to a given PrintStream. If no encoding is specified (null or empty string), does not include the encoding name in the header.
        Parameters:
        encoding - The given XML encoding name or null.
        oWriter - The given output PrintStream.
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLTag

        public static void printXMLTag​(java.lang.String tag,
                                       java.io.PrintWriter oWriter,
                                       boolean tagEnd,
                                       int level)
                                throws java.io.IOException
        Prints a given XML tag to a given PrintWriter, maintaining a given indentation level.
        Parameters:
        tag - The given XML tag.
        oWriter - The given PrintWriter object.
        tagEnd - If false prints the XML tag beginning brackets, otherwise prints the the XML tag ending brackets.
        level - The given indentation level (number of marginal '\t' symbols).
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • printXMLTag

        public static void printXMLTag​(java.lang.String tag,
                                       java.util.Properties attributes,
                                       java.io.PrintWriter oWriter,
                                       boolean tagEnd,
                                       int level)
                                throws java.io.IOException
        Prints a given XML tag with given element attributes to a given PrintWriter, maintaining a given indentation level.
        Parameters:
        tag - The given XML tag.
        attributes - The given XML element attributes.
        oWriter - The given PrintWriter object.
        tagEnd - If false prints the XML tag beginning brackets, otherwise prints the the XML tag ending brackets.
        level - The given indentation level (number of marginal '\t' symbols).
        Throws:
        java.io.IOException - if any I/O exception occurred.
      • xmlEscape

        private static java.lang.String xmlEscape​(java.lang.String value)