Class XmlUtils


  • public class XmlUtils
    extends java.lang.Object
    XML Utilities
    • Constructor Summary

      Constructors 
      Constructor Description
      XmlUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void appendXmlAttributeValue​(java.lang.StringBuilder sb, java.lang.String attrValue)
      Appends text to the given StringBuilder and escapes it as required for a DOM attribute node.
      static void appendXmlTextValue​(java.lang.StringBuilder sb, java.lang.String textValue)
      Appends text to the given StringBuilder and escapes it as required for a DOM text node.
      static java.lang.String formatFloatAttribute​(double value)
      Format the given floating value into an XML string, omitting decimals if 0
      static java.lang.String fromXmlAttributeValue​(java.lang.String escapedAttrValue)
      Converts the given XML-attribute-safe value to a java string
      static java.io.Reader getUtfReader​(java.io.File file)
      Returns a character reader for the given file, which must be a UTF encoded file.
      static boolean hasElementChildren​(org.w3c.dom.Node node)
      Returns true if the given node has one or more element children
      static java.lang.String lookupNamespacePrefix​(org.w3c.dom.Node node, java.lang.String nsUri)
      Returns the namespace prefix matching the requested namespace URI.
      static java.lang.String lookupNamespacePrefix​(org.w3c.dom.Node node, java.lang.String nsUri, boolean create)
      Returns the namespace prefix matching the requested namespace URI.
      static java.lang.String lookupNamespacePrefix​(org.w3c.dom.Node node, java.lang.String nsUri, java.lang.String defaultPrefix, boolean create)
      Returns the namespace prefix matching the requested namespace URI.
      static org.w3c.dom.Document parseDocument​(java.lang.String xml, boolean namespaceAware)
      Parses the given XML string as a DOM document, using the JDK parser.
      static org.w3c.dom.Document parseDocumentSilently​(java.lang.String xml, boolean namespaceAware)
      Parses the given XML string as a DOM document, using the JDK parser.
      static org.w3c.dom.Document parseUtfXmlFile​(java.io.File file, boolean namespaceAware)
      Parses the given UTF file as a DOM document, using the JDK parser.
      static java.lang.String stripBom​(java.lang.String xml)
      Strips out a leading UTF byte order mark, if present
      static java.lang.String toXml​(org.w3c.dom.Node node)
      Dump an XML tree to string.
      static java.lang.String toXmlAttributeValue​(java.lang.String attrValue)
      Converts the given attribute value to an XML-attribute-safe value, meaning that single and double quotes are replaced with their corresponding XML entities.
      static java.lang.String toXmlTextValue​(java.lang.String textValue)
      Converts the given attribute value to an XML-text-safe value, meaning that less than and ampersand characters are escaped.
      • Methods inherited from class java.lang.Object

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

      • XmlUtils

        public XmlUtils()
    • Method Detail

      • lookupNamespacePrefix

        @NonNull
        public static java.lang.String lookupNamespacePrefix​(@NonNull
                                                             org.w3c.dom.Node node,
                                                             @NonNull
                                                             java.lang.String nsUri)
        Returns the namespace prefix matching the requested namespace URI. If no such declaration is found, returns the default "android" prefix for the Android URI, and "app" for other URI's. By default the app namespace will be created. If this is not desirable, call lookupNamespacePrefix(Node, String, boolean) instead.
        Parameters:
        node - The current node. Must not be null.
        nsUri - The namespace URI of which the prefix is to be found, e.g. SdkConstants.ANDROID_URI
        Returns:
        The first prefix declared or the default "android" prefix (or "app" for non-Android URIs)
      • lookupNamespacePrefix

        @NonNull
        public static java.lang.String lookupNamespacePrefix​(@NonNull
                                                             org.w3c.dom.Node node,
                                                             @NonNull
                                                             java.lang.String nsUri,
                                                             boolean create)
        Returns the namespace prefix matching the requested namespace URI. If no such declaration is found, returns the default "android" prefix for the Android URI, and "app" for other URI's.
        Parameters:
        node - The current node. Must not be null.
        nsUri - The namespace URI of which the prefix is to be found, e.g. SdkConstants.ANDROID_URI
        create - whether the namespace declaration should be created, if necessary
        Returns:
        The first prefix declared or the default "android" prefix (or "app" for non-Android URIs)
      • lookupNamespacePrefix

        public static java.lang.String lookupNamespacePrefix​(@Nullable
                                                             org.w3c.dom.Node node,
                                                             @Nullable
                                                             java.lang.String nsUri,
                                                             @Nullable
                                                             java.lang.String defaultPrefix,
                                                             boolean create)
        Returns the namespace prefix matching the requested namespace URI. If no such declaration is found, returns the default "android" prefix.
        Parameters:
        node - The current node. Must not be null.
        nsUri - The namespace URI of which the prefix is to be found, e.g. SdkConstants.ANDROID_URI
        defaultPrefix - The default prefix (root) to use if the namespace is not found. If null, do not create a new namespace if this URI is not defined for the document.
        create - whether the namespace declaration should be created, if necessary
        Returns:
        The first prefix declared or the provided prefix (possibly with a number appended to avoid conflicts with existing prefixes.
      • toXmlAttributeValue

        @NonNull
        public static java.lang.String toXmlAttributeValue​(@NonNull
                                                           java.lang.String attrValue)
        Converts the given attribute value to an XML-attribute-safe value, meaning that single and double quotes are replaced with their corresponding XML entities.
        Parameters:
        attrValue - the value to be escaped
        Returns:
        the escaped value
      • fromXmlAttributeValue

        @NonNull
        public static java.lang.String fromXmlAttributeValue​(@NonNull
                                                             java.lang.String escapedAttrValue)
        Converts the given XML-attribute-safe value to a java string
        Parameters:
        escapedAttrValue - the escaped value
        Returns:
        the unescaped value
      • toXmlTextValue

        @NonNull
        public static java.lang.String toXmlTextValue​(@NonNull
                                                      java.lang.String textValue)
        Converts the given attribute value to an XML-text-safe value, meaning that less than and ampersand characters are escaped.
        Parameters:
        textValue - the text value to be escaped
        Returns:
        the escaped value
      • appendXmlAttributeValue

        public static void appendXmlAttributeValue​(@NonNull
                                                   java.lang.StringBuilder sb,
                                                   @NonNull
                                                   java.lang.String attrValue)
        Appends text to the given StringBuilder and escapes it as required for a DOM attribute node.
        Parameters:
        sb - the string builder
        attrValue - the attribute value to be appended and escaped
      • appendXmlTextValue

        public static void appendXmlTextValue​(@NonNull
                                              java.lang.StringBuilder sb,
                                              @NonNull
                                              java.lang.String textValue)
        Appends text to the given StringBuilder and escapes it as required for a DOM text node.
        Parameters:
        sb - the string builder
        textValue - the text value to be appended and escaped
      • hasElementChildren

        public static boolean hasElementChildren​(@NonNull
                                                 org.w3c.dom.Node node)
        Returns true if the given node has one or more element children
        Parameters:
        node - the node to test for element children
        Returns:
        true if the node has one or more element children
      • getUtfReader

        public static java.io.Reader getUtfReader​(@NonNull
                                                  java.io.File file)
                                           throws java.io.IOException
        Returns a character reader for the given file, which must be a UTF encoded file.

        The reader does not need to be closed by the caller (because the file is read in full in one shot and the resulting array is then wrapped in a byte array input stream, which does not need to be closed.)

        Throws:
        java.io.IOException
      • parseDocument

        @NonNull
        public static org.w3c.dom.Document parseDocument​(@NonNull
                                                         java.lang.String xml,
                                                         boolean namespaceAware)
                                                  throws javax.xml.parsers.ParserConfigurationException,
                                                         java.io.IOException,
                                                         org.xml.sax.SAXException
        Parses the given XML string as a DOM document, using the JDK parser. The parser does not validate, and is optionally namespace aware.
        Parameters:
        xml - the XML content to be parsed (must be well formed)
        namespaceAware - whether the parser is namespace aware
        Returns:
        the DOM document
        Throws:
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
        org.xml.sax.SAXException
      • parseUtfXmlFile

        @NonNull
        public static org.w3c.dom.Document parseUtfXmlFile​(@NonNull
                                                           java.io.File file,
                                                           boolean namespaceAware)
                                                    throws javax.xml.parsers.ParserConfigurationException,
                                                           java.io.IOException,
                                                           org.xml.sax.SAXException
        Parses the given UTF file as a DOM document, using the JDK parser. The parser does not validate, and is optionally namespace aware.
        Parameters:
        file - the UTF encoded file to parse
        namespaceAware - whether the parser is namespace aware
        Returns:
        the DOM document
        Throws:
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
        org.xml.sax.SAXException
      • stripBom

        @NonNull
        public static java.lang.String stripBom​(@NonNull
                                                java.lang.String xml)
        Strips out a leading UTF byte order mark, if present
      • parseDocumentSilently

        @Nullable
        public static org.w3c.dom.Document parseDocumentSilently​(@NonNull
                                                                 java.lang.String xml,
                                                                 boolean namespaceAware)
        Parses the given XML string as a DOM document, using the JDK parser. The parser does not validate, and is optionally namespace aware. Any parsing errors are silently ignored.
        Parameters:
        xml - the XML content to be parsed (must be well formed)
        namespaceAware - whether the parser is namespace aware
        Returns:
        the DOM document, or null
      • toXml

        public static java.lang.String toXml​(org.w3c.dom.Node node)
        Dump an XML tree to string. This does not perform any pretty printing. To perform pretty printing, use XmlPrettyPrinter.prettyPrint(node) in sdk-common.
      • formatFloatAttribute

        public static java.lang.String formatFloatAttribute​(double value)
        Format the given floating value into an XML string, omitting decimals if 0
        Parameters:
        value - the value to be formatted
        Returns:
        the corresponding XML string for the value