Package com.android.utils
Class XmlUtils
- java.lang.Object
-
- com.android.utils.XmlUtils
-
public class XmlUtils extends java.lang.Object
XML Utilities
-
-
Field Summary
Fields Modifier and Type Field Description static char
NS_SEPARATOR
Separator for xml namespace and localnamestatic java.lang.String
XML_COMMENT_BEGIN
static java.lang.String
XML_COMMENT_END
static java.lang.String
XML_PROLOG
-
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 givenStringBuilder
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 givenStringBuilder
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 0static java.lang.String
fromXmlAttributeValue(java.lang.String escapedAttrValue)
Converts the given XML-attribute-safe value to a java stringstatic 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 childrenstatic 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 presentstatic 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.
-
-
-
Field Detail
-
XML_COMMENT_BEGIN
public static final java.lang.String XML_COMMENT_BEGIN
- See Also:
- Constant Field Values
-
XML_COMMENT_END
public static final java.lang.String XML_COMMENT_END
- See Also:
- Constant Field Values
-
XML_PROLOG
public static final java.lang.String XML_PROLOG
- See Also:
- Constant Field Values
-
NS_SEPARATOR
public static final char NS_SEPARATOR
Separator for xml namespace and localname- See Also:
- Constant Field Values
-
-
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, calllookupNamespacePrefix(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 givenStringBuilder
and escapes it as required for a DOM attribute node.- Parameters:
sb
- the string builderattrValue
- 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 givenStringBuilder
and escapes it as required for a DOM text node.- Parameters:
sb
- the string buildertextValue
- 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 parsenamespaceAware
- 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, useXmlPrettyPrinter.prettyPrint(node)
insdk-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
-
-