Class XMLUnit


  • public final class XMLUnit
    extends Object
    Allows access to project control parameters such as which Parser to use and provides some convenience methods for building Documents from Strings etc.
    • Method Detail

      • setControlParser

        public static void setControlParser​(String className)
        Overide the DocumentBuilder to use to parse control documents. This is useful when comparing the output of two different parsers. Note: setting the control parser before any test cases are run will affect the test parser as well.
        Parameters:
        className - class name of a DocumentBuilderFactory
      • setTestEntityResolver

        public static void setTestEntityResolver​(EntityResolver resolver)
        Sets an EntityResolver to be added to all new test parsers. Setting to null will reset to the default EntityResolver
        Parameters:
        resolver - EntityResolver
      • setControlEntityResolver

        public static void setControlEntityResolver​(EntityResolver resolver)
        Sets an EntityResolver to be added to all new control parsers. Setting to null will reset to the default EntityResolver
        Parameters:
        resolver - EntityResolver
      • getControlEntityResolver

        public static EntityResolver getControlEntityResolver()
        Obtains the EntityResolver to be added to all new control parsers.
        Returns:
        EntityResolver to be added to all new control parsers
      • getTestEntityResolver

        public static EntityResolver getTestEntityResolver()
        Obtains the EntityResolver to be added to all new test parsers.
        Returns:
        EntityResolver to be added to all new test parsers
      • getControlDocumentBuilderFactory

        public static DocumentBuilderFactory getControlDocumentBuilderFactory()
        Get the DocumentBuilderFactory instance used to instantiate parsers for the control XML in an XMLTestCase.
        Returns:
        factory for control parsers
      • setControlDocumentBuilderFactory

        public static void setControlDocumentBuilderFactory​(DocumentBuilderFactory factory)
        Override the DocumentBuilderFactory used to instantiate parsers for the control XML in an XMLTestCase.
        Parameters:
        factory - factory to use
      • setTestParser

        public static void setTestParser​(String className)
        Overide the DocumentBuilder to use to parser test documents. This is useful when comparing the output of two different parsers. Note: setting the test parser before any test cases are run will affect the control parser as well.
        Parameters:
        className - class name of a DocumentBuilderFactory
      • getTestDocumentBuilderFactory

        public static DocumentBuilderFactory getTestDocumentBuilderFactory()
        Get the DocumentBuilderFactory instance used to instantiate parsers for the test XML in an XMLTestCase.
        Returns:
        factory for test parsers
      • setTestDocumentBuilderFactory

        public static void setTestDocumentBuilderFactory​(DocumentBuilderFactory factory)
        Override the DocumentBuilderFactory used to instantiate parsers for the test XML in an XMLTestCase.
        Parameters:
        factory - factory to use
      • setIgnoreWhitespace

        public static void setIgnoreWhitespace​(boolean ignore)
        Whether to ignore whitespace when comparing node values.

        This method also invokes setIgnoringElementContentWhitespace() on the underlying control AND test document builder factories.

        Setting this parameter has no effect on whitespace inside texts.

        Parameters:
        ignore - whether to ignore whitespace
      • getIgnoreWhitespace

        public static boolean getIgnoreWhitespace()
        Whether to ignore whitespace when comparing node values.
        Returns:
        true if whitespace should be ignored when comparing nodes, false otherwise
      • buildControlDocument

        public static Document buildControlDocument​(String fromXML)
                                             throws SAXException,
                                                    IOException
        Utility method to build a Document using the control DocumentBuilder to parse the specified String.
        Parameters:
        fromXML - the XML to parse
        Returns:
        Document parsed document
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • buildControlDocument

        public static Document buildControlDocument​(InputSource fromSource)
                                             throws IOException,
                                                    SAXException
        Utility method to build a Document using the control DocumentBuilder and the specified InputSource
        Parameters:
        fromSource - the XML to parse
        Returns:
        Document parsed document
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • buildTestDocument

        public static Document buildTestDocument​(String fromXML)
                                          throws SAXException,
                                                 IOException
        Utility method to build a Document using the test DocumentBuilder to parse the specified String.
        Parameters:
        fromXML - the XML to parse
        Returns:
        Document parsed document
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • buildTestDocument

        public static Document buildTestDocument​(InputSource fromSource)
                                          throws IOException,
                                                 SAXException
        Utility method to build a Document using the test DocumentBuilder and the specified InputSource
        Parameters:
        fromSource - the XML to parse
        Returns:
        Document parsed document
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • buildDocument

        public static Document buildDocument​(DocumentBuilder withBuilder,
                                             Reader fromReader)
                                      throws SAXException,
                                             IOException
        Utility method to build a Document using a specific DocumentBuilder and reading characters from a specific Reader.
        Parameters:
        withBuilder - DocumentBuilder to use
        fromReader - the XML to parse
        Returns:
        Document parsed document
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • buildDocument

        public static Document buildDocument​(DocumentBuilder withBuilder,
                                             InputSource fromSource)
                                      throws IOException,
                                             SAXException
        Utility method to build a Document using a specific DocumentBuilder and a specific InputSource
        Parameters:
        withBuilder - DocumentBuilder to use
        fromSource - the XML to parse
        Returns:
        Document parsed document
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • setTransformerFactory

        public static void setTransformerFactory​(String className)
        Overide the transformer to use for XSLT transformations (and by implication serialization and XPaths). This is useful when comparing transformer implementations.
        Parameters:
        className - name of a TransformerFactory class
      • getTransformerFactory

        public static TransformerFactory getTransformerFactory()
        Get the transformer to use for XSLT transformations (and by implication serialization and XPaths).
        Returns:
        the current transformer factory in use a new instance of the default transformer factory
      • setURIResolver

        public static void setURIResolver​(URIResolver resolver)
        Sets the URIResolver to use during transformations.
        Parameters:
        resolver - URIResolver
      • getURIResolver

        public static URIResolver getURIResolver()
        Gets the URIResolver used during Transformations.
        Returns:
        URIResolver used during Transformations
      • setSAXParserFactory

        public static void setSAXParserFactory​(String className)
        Override the SAX parser to use in tests. Currently only used by Validator class
        Parameters:
        className - name of a SAXParserFactory
      • setSAXParserFactory

        public static void setSAXParserFactory​(SAXParserFactory factory)
        Override the SAX parser to use in tests. Currently only used by Validator class
        Parameters:
        factory - factory to use
      • getSAXParserFactory

        public static SAXParserFactory getSAXParserFactory()
        Get the SAX parser to use in tests.

        Unless an instance has been given via setSAXParserFactory explicitly, the returned factory will be namespace aware.

        Returns:
        the SAXParserFactory instance used by the Validator to perform DTD validation
      • getStripWhitespaceTransform

        public static Transform getStripWhitespaceTransform​(Document forDocument)
        Obtain the transformation that will strip whitespace from a DOM containing empty Text nodes
        Parameters:
        forDocument - document to apply transformation to
        Returns:
        a Transform to do the whitespace stripping
      • getWhitespaceStrippedDocument

        public static Document getWhitespaceStrippedDocument​(Document forDoc)
        Returns a new Document instance that is identical to the one passed in with element content whitespace removed.

        Will use getStripWhitespaceTransform unless we are operating under the severly broken XSLTC Transformer shipping with JDK 1.5.

        Parameters:
        forDoc - document to apply transformation to
        Returns:
        document without any element content whitespace
      • getStripCommentsTransform

        public static Transform getStripCommentsTransform​(Document forDocument)
        Obtain the transformation that will strip comments from a DOM.
        Parameters:
        forDocument - document to apply transformation to
        Returns:
        a Transform to do the whitespace stripping
      • getVersion

        public static String getVersion()
        Place holder for current version info.
        Returns:
        current version
      • compareXML

        public static Diff compareXML​(InputSource control,
                                      InputSource test)
                               throws SAXException,
                                      IOException
        Compare XML documents provided by two InputSource classes
        Parameters:
        control - Control document
        test - Document to test
        Returns:
        Diff object describing differences in documents
        Throws:
        SAXException - if parsing fails
        IOException - on I/O errors
      • compareXML

        public static Diff compareXML​(Reader control,
                                      Reader test)
                               throws SAXException,
                                      IOException
        Compare XML documents provided by two Reader classes
        Parameters:
        control - Control document
        test - Document to test
        Returns:
        Diff object describing differences in documents
        Throws:
        SAXException - if parsing fails
        IOException - on I/O errors
      • compareXML

        public static Diff compareXML​(String control,
                                      Reader test)
                               throws SAXException,
                                      IOException
        Compare XML documents provided by two Reader classes
        Parameters:
        control - Control document
        test - Document to test
        Returns:
        Diff object describing differences in documents
        Throws:
        SAXException - if parsing fails
        IOException - on I/O errors
      • compareXML

        public static Diff compareXML​(Reader control,
                                      String test)
                               throws SAXException,
                                      IOException
        Compare XML documents provided by two Reader classes
        Parameters:
        control - Control document
        test - Document to test
        Returns:
        Diff object describing differences in documents
        Throws:
        SAXException - if parsing fails
        IOException - on I/O errors
      • compareXML

        public static Diff compareXML​(String control,
                                      String test)
                               throws SAXException,
                                      IOException
        Compare two XML documents provided as strings
        Parameters:
        control - Control document
        test - Document to test
        Returns:
        Diff object describing differences in documents
        Throws:
        SAXException - if parsing fails
        IOException - on I/O errors
      • compareXML

        public static Diff compareXML​(Document control,
                                      Document test)
        Compare two XML documents provided as strings
        Parameters:
        control - Control document
        test - Document to test
        Returns:
        Diff object describing differences in documents
      • getXpathNamespaceContext

        public static NamespaceContext getXpathNamespaceContext()
        Get the NamespaceContext to use in XPath tests.
        Returns:
        NamespaceContext to use in XPath tests
      • setXpathNamespaceContext

        public static void setXpathNamespaceContext​(NamespaceContext ctx)
        Set the NamespaceContext to use in XPath tests.
        Parameters:
        ctx - NamespaceContext to use in XPath tests
      • newXpathEngine

        public static XpathEngine newXpathEngine()
        Obtains an XpathEngine to use in XPath tests.
        Returns:
        XpathEngine
      • setIgnoreDiffBetweenTextAndCDATA

        public static void setIgnoreDiffBetweenTextAndCDATA​(boolean b)
        Whether CDATA sections and Text nodes should be considered the same.

        The default is false.

        This also set the DocumentBuilderFactory's coalescing flag on the factories for the control and test document.

        Parameters:
        b - whether CDATA sections and Text nodes should be considered the same
      • getIgnoreDiffBetweenTextAndCDATA

        public static boolean getIgnoreDiffBetweenTextAndCDATA()
        Whether CDATA sections and Text nodes should be considered the same.
        Returns:
        false by default
      • setIgnoreComments

        public static void setIgnoreComments​(boolean b)
        Whether comments should be ignored.

        The default value is false

        Parameters:
        b - whether comments are ignored
      • getIgnoreComments

        public static boolean getIgnoreComments()
        Whether comments should be ignored.

        The default value is false

        Returns:
        whether comments are ignored
      • setNormalize

        public static void setNormalize​(boolean b)
        Whether Text nodes should be normalized.

        The default value is false

        Note: if you are only working with documents read from streams (like files or network connections) or working with strings, there is no reason to change the default since the XML parser is required to normalize the documents. If you are testing Document instances you've created in code, you may want to alter the default behavior.

        Note2: depending on the XML parser or XSLT transformer you use, setting ignoreWhitespace or ignoreComments to true may have already normalized your document and this setting doesn't have any effect anymore.

        Parameters:
        b - whether Text nodes should be normalizedd
      • getNormalize

        public static boolean getNormalize()
        Whether Text nodes should be normalized.

        The default value is false

        Returns:
        whether Text nodes should be normalizedd
      • setNormalizeWhitespace

        public static void setNormalizeWhitespace​(boolean b)
        Whether whitespace characters inside text nodes or attributes should be "normalized".

        Normalized in this context means that all whitespace is replaced by the space character and adjacent whitespace characters are collapsed to a single space character. It will also trim the resulting character content on both ends.

        The default value is false.

        Setting this parameter has no effect on ignorable whitespace.

        Parameters:
        b - whether whitespace characters inside text nodes or attributes should be normalizedd
      • getNormalizeWhitespace

        public static boolean getNormalizeWhitespace()
        Whether whitespace characters inside text nodes or attributes should be "normalized".

        Normalized in this context means that all whitespace is replaced by the space character and adjacent whitespace characters are collapsed to a single space character.

        The default value is false.

        Returns:
        whether whitespace characters inside text nodes or attributes should be normalizedd
      • setIgnoreAttributeOrder

        public static void setIgnoreAttributeOrder​(boolean b)
        Whether to ignore the order of attributes on an element.

        The order of attributes has never been relevant for XML documents, still XMLUnit can consider two pieces of XML not-identical (but similar) if they differ in order of attributes. Set this option to true to compare the order.

        The default value is true

        Parameters:
        b - whether to ignore the order of attributes on an element
      • getIgnoreAttributeOrder

        public static boolean getIgnoreAttributeOrder()
        Whether to ignore the order of attributes on an element.

        The order of attributes has never been relevant for XML documents, still XMLUnit can consider two pieces of XML not-identical (but similar) if they differ in order of attributes. Set this option to true to compare the order.

        The default value is true

        Returns:
        whether to ignore the order of attributes on an element
      • setXSLTVersion

        public static void setXSLTVersion​(String s)
        Sets the XSLT version to set on stylesheets used internally.

        Defaults to "1.0".

        Parameters:
        s - XSLT version to set on stylesheets
        Throws:
        ConfigurationException - if the argument cannot be parsed as a positive number.
      • getXSLTVersion

        public static String getXSLTVersion()
        The XSLT version set on stylesheets used internally.

        Defaults to "1.0".

        Returns:
        XSLT version to set on stylesheets
      • setXPathFactory

        public static void setXPathFactory​(String className)
        Sets the class to use as XPathFactory when using JAXP 1.3.
        Parameters:
        className - name of an XPathFactory
      • getXPathFactory

        public static String getXPathFactory()
        Gets the class to use as XPathFactory when using JAXP 1.3.
        Returns:
        name of the XPathFactory
      • setExpandEntityReferences

        public static void setExpandEntityReferences​(boolean b)
        Whether the parser shall be instructed to expand entity references.

        Defaults to false.

        Parameters:
        b - whether the parser shall be instructed to expand entity references
        See Also:
        DocumentBuilderFactory.setExpandEntityReferences(boolean)
      • getExpandEntityReferences

        public static boolean getExpandEntityReferences()
        Whether the parser shall be instructed to expand entity references.
        Returns:
        whether the parser shall be instructed to expand entity references
      • setCompareUnmatched

        public static void setCompareUnmatched​(boolean b)
        Whether to compare unmatched control nodes to unmatched test nodes.

        Defaults to true.

        Parameters:
        b - whether to compare unmatched control nodes to unmatched test nodes
      • getCompareUnmatched

        public static boolean getCompareUnmatched()
        Whether unmatched control nodes should be compared to unmatched test nodes.
        Returns:
        true by default
      • setEnableXXEProtection

        public static void setEnableXXEProtection​(boolean b)
        Whether to enable XXE protection on the factories used by this class.
        Parameters:
        b - whether to enable XXE protection on the factories used by this class
        Since:
        XMLUnit 2.6.0
        See Also:
        "https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet"
      • getEnableXXEProtection

        public static boolean getEnableXXEProtection()
        Whether XXE protection is enabled on the factories used by this class.
        Returns:
        whether to enable XXE protection on the factories used by this class
        Since:
        XMLUnit 2.6.0
        See Also:
        "https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet"