Class XMLUtils


  • public class XMLUtils
    extends java.lang.Object
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected static boolean enableParserReuse  
      static java.lang.String httpAuthCharEncoding  
      protected static org.apache.commons.logging.Log log  
    • Constructor Summary

      Constructors 
      Constructor Description
      XMLUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static org.w3c.dom.Element[] asElementArray​(java.util.List list)
      Converts a List with org.w3c.dom.Element objects to an Array with org.w3c.dom.Element objects.
      static java.lang.String base64encode​(byte[] bytes)  
      static void DocumentToStream​(org.w3c.dom.Document doc, java.io.OutputStream out)  
      static java.lang.String DocumentToString​(org.w3c.dom.Document doc)
      turn a whole DOM document into XML
      static void DocumentToWriter​(org.w3c.dom.Document doc, java.io.Writer writer)  
      static void ElementToStream​(org.w3c.dom.Element element, java.io.OutputStream out)  
      static java.lang.String ElementToString​(org.w3c.dom.Element element)
      turn an element into an XML fragment
      static void ElementToWriter​(org.w3c.dom.Element element, java.io.Writer writer)  
      static org.w3c.dom.Node findNode​(org.w3c.dom.Node node, QName name)
      Find a Node with a given QName
      static java.lang.String getChildCharacterData​(org.w3c.dom.Element parentEl)
      Concat all the text and cdata node children of this elem and return the resulting text.
      static javax.xml.parsers.DocumentBuilder getDocumentBuilder()
      Gets a DocumentBuilder
      static org.xml.sax.InputSource getEmptyInputSource()  
      static java.lang.String getEncoding()
      Get the current encoding in effect
      static java.lang.String getEncoding​(MessageContext msgContext)
      Get the current encoding in effect
      static java.lang.String getEncoding​(Message message, MessageContext msgContext)  
      static java.lang.String getEncoding​(Message message, MessageContext msgContext, XMLEncoder defaultEncoder)  
      static QName getFullQNameFromString​(java.lang.String str, org.w3c.dom.Node e)
      Return a QName when passed a string like "foo:bar" by mapping the "foo" prefix to a namespace in the context of the given Node.
      static java.lang.String getInnerXMLString​(org.w3c.dom.Element element)
      get the inner XML inside an element as a string.
      static org.xml.sax.InputSource getInputSourceFromURI​(java.lang.String uri)
      Utility to get the bytes uri.
      static java.lang.String getNamespace​(java.lang.String prefix, org.w3c.dom.Node e)  
      static java.lang.String getNamespace​(java.lang.String prefix, org.w3c.dom.Node e, org.w3c.dom.Node stopNode)
      Searches for the namespace URI of the given prefix in the given DOM range.
      static java.lang.String getPrefix​(java.lang.String uri, org.w3c.dom.Node e)  
      static QName getQNameFromString​(java.lang.String str, org.w3c.dom.Node e)
      Return a QName when passed a string like "foo:bar" by mapping the "foo" prefix to a namespace in the context of the given Node.
      static javax.xml.parsers.SAXParser getSAXParser()
      Get a SAX parser instance from the JAXP factory.
      static java.lang.String getStringForQName​(QName qname, org.w3c.dom.Element e)
      Return a string for a particular QName, mapping a new prefix if necessary.
      static XMLEncoder getXMLEncoder​(java.lang.String encoding)
      Get the XMLEncoder for specific encoding
      static XMLEncoder getXMLEncoder​(MessageContext msgContext)
      Get the current XMLEncoder
      static void initSAXFactory​(java.lang.String factoryClassName, boolean namespaceAware, boolean validating)
      Initialize the SAX parser factory.
      static org.w3c.dom.Document newDocument()
      Get an empty new Document
      static org.w3c.dom.Document newDocument​(java.io.InputStream inp)
      Get a new Document read from the input stream
      static org.w3c.dom.Document newDocument​(java.lang.String uri)
      Get a new Document read from the indicated uri
      static org.w3c.dom.Document newDocument​(java.lang.String uri, java.lang.String username, java.lang.String password)
      Create a new document from the given URI, use the username and password if the URI requires authentication.
      static org.w3c.dom.Document newDocument​(org.xml.sax.InputSource inp)
      Get a new Document read from the input source
      static void normalize​(org.w3c.dom.Node node)
      Trim all new lines from text nodes.
      static void PrettyDocumentToStream​(org.w3c.dom.Document doc, java.io.OutputStream out)  
      static java.lang.String PrettyDocumentToString​(org.w3c.dom.Document doc)  
      static void PrettyDocumentToWriter​(org.w3c.dom.Document doc, java.io.Writer writer)  
      static void PrettyElementToStream​(org.w3c.dom.Element element, java.io.OutputStream out)  
      static void PrettyElementToWriter​(org.w3c.dom.Element element, java.io.Writer writer)  
      static void privateElementToWriter​(org.w3c.dom.Element element, java.io.Writer writer, boolean omitXMLDecl, boolean pretty)  
      static void releaseDocumentBuilder​(javax.xml.parsers.DocumentBuilder db)
      Releases a DocumentBuilder
      static void releaseSAXParser​(javax.xml.parsers.SAXParser parser)
      Return a SAX parser for reuse.
      static org.xml.sax.InputSource sourceToInputSource​(javax.xml.transform.Source source)
      Utility to get the bytes uri
      static org.w3c.dom.Element StringToElement​(java.lang.String namespace, java.lang.String name, java.lang.String string)
      Convert a simple string to an element with a text node
      static java.lang.String trim​(java.lang.String str)  
      static java.lang.String xmlEncodeString​(java.lang.String orig)
      Encode a string appropriately for XML.
      • Methods inherited from class java.lang.Object

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

      • log

        protected static org.apache.commons.logging.Log log
      • httpAuthCharEncoding

        public static final java.lang.String httpAuthCharEncoding
        See Also:
        Constant Field Values
      • enableParserReuse

        protected static boolean enableParserReuse
    • Constructor Detail

      • XMLUtils

        public XMLUtils()
    • Method Detail

      • xmlEncodeString

        public static java.lang.String xmlEncodeString​(java.lang.String orig)
        Encode a string appropriately for XML.
        Parameters:
        orig - the String to encode
        Returns:
        a String in which XML special chars are repalced by entities
      • getXMLEncoder

        public static XMLEncoder getXMLEncoder​(MessageContext msgContext)
        Get the current XMLEncoder
        Returns:
        XMLEncoder
      • getXMLEncoder

        public static XMLEncoder getXMLEncoder​(java.lang.String encoding)
        Get the XMLEncoder for specific encoding
        Returns:
        XMLEncoder
      • getEncoding

        public static java.lang.String getEncoding​(MessageContext msgContext)
        Get the current encoding in effect
        Returns:
        string
      • getEncoding

        public static java.lang.String getEncoding()
        Get the current encoding in effect
        Returns:
        string
      • initSAXFactory

        public static void initSAXFactory​(java.lang.String factoryClassName,
                                          boolean namespaceAware,
                                          boolean validating)
        Initialize the SAX parser factory.
        Parameters:
        factoryClassName - The (optional) class name of the desired SAXParserFactory implementation. Will be assigned to the system property javax.xml.parsers.SAXParserFactory unless this property is already set. If null, leaves current setting alone.
        namespaceAware - true if we want a namespace-aware parser
        validating - true if we want a validating parser
      • getDocumentBuilder

        public static javax.xml.parsers.DocumentBuilder getDocumentBuilder()
                                                                    throws javax.xml.parsers.ParserConfigurationException
        Gets a DocumentBuilder
        Returns:
        DocumentBuilder
        Throws:
        javax.xml.parsers.ParserConfigurationException
      • releaseDocumentBuilder

        public static void releaseDocumentBuilder​(javax.xml.parsers.DocumentBuilder db)
        Releases a DocumentBuilder
        Parameters:
        db -
      • getSAXParser

        public static javax.xml.parsers.SAXParser getSAXParser()
        Get a SAX parser instance from the JAXP factory.
        Returns:
        a SAXParser instance.
      • releaseSAXParser

        public static void releaseSAXParser​(javax.xml.parsers.SAXParser parser)
        Return a SAX parser for reuse.
        Parameters:
        parser - A SAX parser that is available for reuse
      • newDocument

        public static org.w3c.dom.Document newDocument()
                                                throws javax.xml.parsers.ParserConfigurationException
        Get an empty new Document
        Returns:
        Document
        Throws:
        javax.xml.parsers.ParserConfigurationException - if construction problems occur
      • newDocument

        public static org.w3c.dom.Document newDocument​(org.xml.sax.InputSource inp)
                                                throws javax.xml.parsers.ParserConfigurationException,
                                                       org.xml.sax.SAXException,
                                                       java.io.IOException
        Get a new Document read from the input source
        Returns:
        Document
        Throws:
        javax.xml.parsers.ParserConfigurationException - if construction problems occur
        org.xml.sax.SAXException - if the document has xml sax problems
        java.io.IOException - if i/o exceptions occur
      • newDocument

        public static org.w3c.dom.Document newDocument​(java.io.InputStream inp)
                                                throws javax.xml.parsers.ParserConfigurationException,
                                                       org.xml.sax.SAXException,
                                                       java.io.IOException
        Get a new Document read from the input stream
        Returns:
        Document
        Throws:
        javax.xml.parsers.ParserConfigurationException - if construction problems occur
        org.xml.sax.SAXException - if the document has xml sax problems
        java.io.IOException - if i/o exceptions occur
      • newDocument

        public static org.w3c.dom.Document newDocument​(java.lang.String uri)
                                                throws javax.xml.parsers.ParserConfigurationException,
                                                       org.xml.sax.SAXException,
                                                       java.io.IOException
        Get a new Document read from the indicated uri
        Returns:
        Document
        Throws:
        javax.xml.parsers.ParserConfigurationException - if construction problems occur
        org.xml.sax.SAXException - if the document has xml sax problems
        java.io.IOException - if i/o exceptions occur
      • newDocument

        public static org.w3c.dom.Document newDocument​(java.lang.String uri,
                                                       java.lang.String username,
                                                       java.lang.String password)
                                                throws javax.xml.parsers.ParserConfigurationException,
                                                       org.xml.sax.SAXException,
                                                       java.io.IOException
        Create a new document from the given URI, use the username and password if the URI requires authentication.
        Parameters:
        uri - the resource to get
        username - basic auth username
        password - basic auth password
        Throws:
        javax.xml.parsers.ParserConfigurationException - if construction problems occur
        org.xml.sax.SAXException - if the document has xml sax problems
        java.io.IOException - if i/o exceptions occur
      • ElementToString

        public static java.lang.String ElementToString​(org.w3c.dom.Element element)
        turn an element into an XML fragment
        Parameters:
        element -
        Returns:
        stringified element
      • DocumentToString

        public static java.lang.String DocumentToString​(org.w3c.dom.Document doc)
        turn a whole DOM document into XML
        Parameters:
        doc - DOM document
        Returns:
        string representation of the document, including XML declaration
      • PrettyDocumentToString

        public static java.lang.String PrettyDocumentToString​(org.w3c.dom.Document doc)
      • privateElementToWriter

        public static void privateElementToWriter​(org.w3c.dom.Element element,
                                                  java.io.Writer writer,
                                                  boolean omitXMLDecl,
                                                  boolean pretty)
      • ElementToStream

        public static void ElementToStream​(org.w3c.dom.Element element,
                                           java.io.OutputStream out)
      • PrettyElementToStream

        public static void PrettyElementToStream​(org.w3c.dom.Element element,
                                                 java.io.OutputStream out)
      • ElementToWriter

        public static void ElementToWriter​(org.w3c.dom.Element element,
                                           java.io.Writer writer)
      • PrettyElementToWriter

        public static void PrettyElementToWriter​(org.w3c.dom.Element element,
                                                 java.io.Writer writer)
      • DocumentToStream

        public static void DocumentToStream​(org.w3c.dom.Document doc,
                                            java.io.OutputStream out)
      • PrettyDocumentToStream

        public static void PrettyDocumentToStream​(org.w3c.dom.Document doc,
                                                  java.io.OutputStream out)
      • DocumentToWriter

        public static void DocumentToWriter​(org.w3c.dom.Document doc,
                                            java.io.Writer writer)
      • PrettyDocumentToWriter

        public static void PrettyDocumentToWriter​(org.w3c.dom.Document doc,
                                                  java.io.Writer writer)
      • StringToElement

        public static org.w3c.dom.Element StringToElement​(java.lang.String namespace,
                                                          java.lang.String name,
                                                          java.lang.String string)
        Convert a simple string to an element with a text node
        Parameters:
        namespace - - element namespace
        name - - element name
        string - - value of the text node
        Returns:
        element - an XML Element, null if no element was created
      • getInnerXMLString

        public static java.lang.String getInnerXMLString​(org.w3c.dom.Element element)
        get the inner XML inside an element as a string. This is done by converting the XML to its string representation, then extracting the subset between beginning and end tags.
        Parameters:
        element -
        Returns:
        textual body of the element, or null for no inner body
      • getPrefix

        public static java.lang.String getPrefix​(java.lang.String uri,
                                                 org.w3c.dom.Node e)
      • getNamespace

        public static java.lang.String getNamespace​(java.lang.String prefix,
                                                    org.w3c.dom.Node e,
                                                    org.w3c.dom.Node stopNode)
        Searches for the namespace URI of the given prefix in the given DOM range. The namespace is not searched in parent of the "stopNode". This is usefull to get all the needed namespaces when you need to ouput only a subtree of a DOM document.
        Parameters:
        prefix - the prefix to find
        e - the starting node
        stopNode - null to search in all the document or a parent node where the search must stop.
        Returns:
        null if no namespace is found, or the namespace URI.
      • getNamespace

        public static java.lang.String getNamespace​(java.lang.String prefix,
                                                    org.w3c.dom.Node e)
      • getQNameFromString

        public static QName getQNameFromString​(java.lang.String str,
                                               org.w3c.dom.Node e)
        Return a QName when passed a string like "foo:bar" by mapping the "foo" prefix to a namespace in the context of the given Node.
        Returns:
        a QName generated from the given string representation
      • getFullQNameFromString

        public static QName getFullQNameFromString​(java.lang.String str,
                                                   org.w3c.dom.Node e)
        Return a QName when passed a string like "foo:bar" by mapping the "foo" prefix to a namespace in the context of the given Node. If default namespace is found it is returned as part of the QName.
        Returns:
        a QName generated from the given string representation
      • getStringForQName

        public static java.lang.String getStringForQName​(QName qname,
                                                         org.w3c.dom.Element e)
        Return a string for a particular QName, mapping a new prefix if necessary.
      • getChildCharacterData

        public static java.lang.String getChildCharacterData​(org.w3c.dom.Element parentEl)
        Concat all the text and cdata node children of this elem and return the resulting text. (by Matt Duftler)
        Parameters:
        parentEl - the element whose cdata/text node values are to be combined.
        Returns:
        the concatanated string.
      • getInputSourceFromURI

        public static org.xml.sax.InputSource getInputSourceFromURI​(java.lang.String uri)
        Utility to get the bytes uri. Does NOT handle authenticated URLs, use getInputSourceFromURI(uri, username, password)
        Parameters:
        uri - the resource to get
        See Also:
        getInputSourceFromURI(String uri, String username, String password)
      • sourceToInputSource

        public static org.xml.sax.InputSource sourceToInputSource​(javax.xml.transform.Source source)
        Utility to get the bytes uri
        Parameters:
        source - the resource to get
      • base64encode

        public static final java.lang.String base64encode​(byte[] bytes)
      • getEmptyInputSource

        public static org.xml.sax.InputSource getEmptyInputSource()
      • findNode

        public static org.w3c.dom.Node findNode​(org.w3c.dom.Node node,
                                                QName name)
        Find a Node with a given QName
        Parameters:
        node - parent node
        name - QName of the child we need to find
        Returns:
        child node
      • normalize

        public static void normalize​(org.w3c.dom.Node node)
        Trim all new lines from text nodes.
        Parameters:
        node -
      • trim

        public static java.lang.String trim​(java.lang.String str)
      • asElementArray

        public static org.w3c.dom.Element[] asElementArray​(java.util.List list)
        Converts a List with org.w3c.dom.Element objects to an Array with org.w3c.dom.Element objects.
        Parameters:
        list - List containing org.w3c.dom.Element objects
        Returns:
        Element[] Array with org.w3c.dom.Element objects
      • getEncoding

        public static java.lang.String getEncoding​(Message message,
                                                   MessageContext msgContext)