Package ghidra.util.xml
Class XmlUtilities
java.lang.Object
ghidra.util.xml.XmlUtilities
A set of utility methods for working with XML.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic org.jdom.Element
byteArrayToXml
(byte[] bytes) Converts the specified byte array into an XML element.static org.jdom.input.SAXBuilder
createSecureSAXBuilder
(boolean validate, boolean needsDTD) Create aSAXBuilder
that is not susceptible to XXE.static SAXParserFactory
createSecureSAXParserFactory
(boolean needsDTD) Create aSAXParserFactory
that is not susceptible to XXE.static String
Converts any special or reserved characters in the specified XML string into the equivalent Unicode encoding.static org.jdom.Element
fromString
(String s) Convert a String into a JDOMElement
.static List
<org.jdom.Element> getChildren
(org.jdom.Element ele, String childName) Type-safe way of getting a list ofElement
s from JDom.static boolean
Tests a string for characters that would cause a problem if added to an xml attribute or element.static boolean
parseBoolean
(String boolStr) Parses the given string into a boolean value.static int
parseBoundedInt
(String intStr, int minValue, int maxValue) Parses the specified string as a decimal number, returning its integer value.static int
parseBoundedIntAttr
(org.jdom.Element ele, String attrName, int minValue, int maxValue) Parses the required attribute as a decimal number, returning its integer value.static long
parseBoundedLong
(String longStr, long minValue, long maxValue) Parses the specified string as a decimal number, returning its long integer value.static long
parseBoundedLongAttr
(org.jdom.Element ele, String attrName, long minValue, long maxValue) Parses the required attribute as a decimal number, returning its long integer value.static int
Parse the given string as either a hex number (if it starts with 0x) or a decimal number.static int
Parses the optional specified string as a decimal number, returning its integer value.static long
Parse the given string as either a hex number (if it starts with 0x) or a decimal number.static boolean
parseOptionalBooleanAttr
(org.jdom.Element ele, String attrName, boolean defaultValue) Parses the optional attribute as a boolean value, returning its value or the specified defaultValue if missing.static int
parseOptionalBoundedInt
(String intStr, int defaultValue, int minValue, int maxValue) Parses the optional specified string as a decimal number, returning its integer value, or defaultValue if the string is null.static int
parseOptionalBoundedIntAttr
(org.jdom.Element ele, String attrName, int defaultValue, int minValue, int maxValue) Parses an optional attribute as a decimal number, returning its integer value, or the defaultValue if the attribute is null.static long
parseOptionalBoundedLongAttr
(org.jdom.Element ele, String attrName, long defaultValue, long minValue, long maxValue) Parses the required attribute as a decimal number, returning its long integer value.static String
parseOverlayName
(String addrStr) Parses the overlay name from the specified address string.static org.jdom.Document
Read a File and convert to jdom xml doc.static org.jdom.Document
Read a File and convert to jdom xml doc.static String
requireStringAttr
(org.jdom.Element ele, String attrName) Throws anIOException
with a verbose explanation if the requested attribute is not present or is empty.static void
setIntAttr
(org.jdom.Element ele, String attrName, int attrValue) Sets an integer attribute on the specified element.static void
setStringAttr
(org.jdom.Element ele, String attrName, String attrValue) Sets a string attribute on the specified element.static String
toString
(org.jdom.Element root) Converts the specified XML element into a String.static String
unEscapeElementEntities
(String escapedXMLString) Converts any escaped character entities into their unescaped character equivalents.static void
writeDocToFile
(org.jdom.Document doc, File dest) Writes a JDOM XMLDocument
to aFile
.static void
writePrettyDocToFile
(org.jdom.Document doc, File dest) static byte[]
xmlToByteArray
(org.jdom.Element root) Converts the specified XML element into a byte array.
-
Field Details
-
FEATURE_DISALLOW_DTD
- See Also:
-
FEATURE_EXTERNAL_GENERAL_ENTITIES
- See Also:
-
FEATURE_EXTERNAL_PARAMETER_ENTITIES
- See Also:
-
-
Constructor Details
-
XmlUtilities
public XmlUtilities()
-
-
Method Details
-
escapeElementEntities
Converts any special or reserved characters in the specified XML string into the equivalent Unicode encoding.- Parameters:
xml
- the XML string- Returns:
- the encoded XML string
-
unEscapeElementEntities
Converts any escaped character entities into their unescaped character equivalents. This method is designed to be compatible with the output ofescapeElementEntities(String)
.- Parameters:
escapedXMLString
- The string with escaped data- Returns:
- the unescaped string
-
xmlToByteArray
public static byte[] xmlToByteArray(org.jdom.Element root) Converts the specified XML element into a byte array.- Parameters:
root
- the root element- Returns:
- the byte array translation of the given element
-
toString
Converts the specified XML element into a String.- Parameters:
root
- the root element- Returns:
- String translation of the given element
-
fromString
Convert a String into a JDOMElement
.- Parameters:
s
-- Returns:
- Throws:
org.jdom.JDOMException
IOException
-
writeDocToFile
Writes a JDOM XMLDocument
to aFile
.- Parameters:
doc
- JDOM XMLDocument
to write.dest
-File
to write to.- Throws:
IOException
- if error when writing file.
-
writePrettyDocToFile
- Parameters:
doc
- JDOM XMLDocument
to write.dest
-File
to write to.- Throws:
IOException
- if error when writing file.
-
readDocFromFile
Read a File and convert to jdom xml doc.- Parameters:
f
-File
to read- Returns:
- JDOM
Document
- Throws:
org.jdom.JDOMException
- if text in file isn't valid XMLIOException
- if IO error when reading file.
-
readDocFromFile
public static org.jdom.Document readDocFromFile(ResourceFile f) throws org.jdom.JDOMException, IOException Read a File and convert to jdom xml doc.- Parameters:
f
-ResourceFile
to read- Returns:
- JDOM
Document
- Throws:
org.jdom.JDOMException
- if text in file isn't valid XMLIOException
- if IO error when reading file.
-
byteArrayToXml
public static org.jdom.Element byteArrayToXml(byte[] bytes) Converts the specified byte array into an XML element.- Parameters:
bytes
- the XML bytes- Returns:
- an XML element
-
parseOverlayName
Parses the overlay name from the specified address string. Returns null if the address string does appear to represent an overlay.- Parameters:
addrStr
- the address string- Returns:
- the overlay name or null
-
parseInt
Parse the given string as either a hex number (if it starts with 0x) or a decimal number.- Parameters:
intStr
- the string to parse into an integer- Returns:
- the parsed integer.
- Throws:
NumberFormatException
- if the given string does not represent a valid integer.
-
parseInt
Parses the optional specified string as a decimal number, returning its integer value.- Parameters:
intStr
- string with integer digits, or empty or nulldefaultValue
- value to return if intStr is missing- Returns:
- integer value of the intStr
- Throws:
NumberFormatException
- if intStr could not be parsed or the string specifies a value outside the range of a signed 32 bit integer.
-
parseOptionalBoundedInt
public static int parseOptionalBoundedInt(String intStr, int defaultValue, int minValue, int maxValue) throws NumberFormatException Parses the optional specified string as a decimal number, returning its integer value, or defaultValue if the string is null.- Parameters:
intStr
- string with integer digits, or null.defaultValue
- value to return if intStr is null.minValue
- minimum value allowed (inclusive).maxValue
- maximum value allowed (inclusive).- Returns:
- integer value of the intStr.
- Throws:
NumberFormatException
- if intStr could not be parsed or is out of range.
-
parseBoundedInt
public static int parseBoundedInt(String intStr, int minValue, int maxValue) throws NumberFormatException Parses the specified string as a decimal number, returning its integer value.- Parameters:
intStr
- String with integer digitsminValue
- minimum value allowed (inclusive)maxValue
- maximum value allowed (inclusive)- Returns:
- integer value of the intStr
- Throws:
NumberFormatException
- if intStr is null or empty or could not be parsed or is out of range.
-
parseBoundedIntAttr
public static int parseBoundedIntAttr(org.jdom.Element ele, String attrName, int minValue, int maxValue) throws NumberFormatException Parses the required attribute as a decimal number, returning its integer value.- Parameters:
ele
- JDom element that contains the attributeattrName
- the name of the xml attribute to parseminValue
- minimum value allowed (inclusive)maxValue
- maximum value allowed (inclusive)- Returns:
- integer value of the attribute
- Throws:
NumberFormatException
- if intStr could not be parsed or is out of range.
-
parseOptionalBoundedIntAttr
public static int parseOptionalBoundedIntAttr(org.jdom.Element ele, String attrName, int defaultValue, int minValue, int maxValue) throws NumberFormatException Parses an optional attribute as a decimal number, returning its integer value, or the defaultValue if the attribute is null.- Parameters:
ele
- JDOM element that contains the attribute.attrName
- the name of the xml attribute to parse.defaultValue
- the default value to return if attribute is missing.minValue
- minimum value allowed (inclusive).maxValue
- maximum value allowed (inclusive).- Returns:
- integer value of the attribute.
- Throws:
NumberFormatException
- if the attribute value could not be parsed or is out of range.
-
parseLong
Parse the given string as either a hex number (if it starts with 0x) or a decimal number.- Parameters:
longStr
- the string to parse into an long- Returns:
- the parsed long.
- Throws:
NumberFormatException
- if the given string does not represent a valid long.
-
parseBoundedLong
public static long parseBoundedLong(String longStr, long minValue, long maxValue) throws NumberFormatException Parses the specified string as a decimal number, returning its long integer value.Note, using
Long.MIN_VALUE
and/orLong.MAX_VALUE
as lower and upper bounds is problematic and should be avoided as the range check will become a NO-OP and always succeed.- Parameters:
longStr
- String with integer digitsminValue
- minimum value allowed (inclusive)maxValue
- maximum value allowed (inclusive)- Returns:
- long integer value of the longStr
- Throws:
NumberFormatException
- if intStr is null or empty or could not be parsed or is out of range.
-
parseBoundedLongAttr
public static long parseBoundedLongAttr(org.jdom.Element ele, String attrName, long minValue, long maxValue) throws NumberFormatException Parses the required attribute as a decimal number, returning its long integer value.Note, using
Long.MIN_VALUE
and/orLong.MAX_VALUE
as lower and upper bounds is problematic and should be avoided as the range check will become a NO-OP and always succeed.- Parameters:
ele
- JDom element that contains the attributeattrName
- the name of the xml attribute to parseminValue
- minimum value allowed (inclusive)maxValue
- maximum value allowed (inclusive)- Returns:
- long integer value of the attribute
- Throws:
NumberFormatException
- if intStr could not be parsed or is out of range.
-
parseOptionalBoundedLongAttr
public static long parseOptionalBoundedLongAttr(org.jdom.Element ele, String attrName, long defaultValue, long minValue, long maxValue) throws NumberFormatException Parses the required attribute as a decimal number, returning its long integer value.Note, using
Long.MIN_VALUE
and/orLong.MAX_VALUE
as lower and upper bounds is problematic and should be avoided as the range check will become a NO-OP and always succeed.- Parameters:
ele
- JDom element that contains the attribute.attrName
- the name of the xml attribute to parse.defaultValue
- the default value to return if attribute is missing.minValue
- minimum value allowed (inclusive).maxValue
- maximum value allowed (inclusive).- Returns:
- long integer value of the attribute.
- Throws:
NumberFormatException
- if intStr could not be parsed or is out of range.
-
parseBoolean
Parses the given string into a boolean value. Acceptable inputs are y,n,true,fase. A null input string will return false (useful if optional boolean attribute is false by default)- Parameters:
boolStr
- the string to parse into a boolean value- Returns:
- the boolean result.
- Throws:
XmlAttributeException
- if the string in not one of y,n,true,false or null.
-
parseOptionalBooleanAttr
public static boolean parseOptionalBooleanAttr(org.jdom.Element ele, String attrName, boolean defaultValue) throws IOException Parses the optional attribute as a boolean value, returning its value or the specified defaultValue if missing.- Parameters:
ele
- JDom element that contains the attributeattrName
- the name of the xml attribute to parsedefaultValue
- boolean value to return if the attribute is not defined- Returns:
- boolean equiv of the attribute string value ("y", "true"/"n", "false")
- Throws:
IOException
- if attribute value is not valid boolean string
-
requireStringAttr
Throws anIOException
with a verbose explanation if the requested attribute is not present or is empty.- Parameters:
ele
- JDOMElement
that contains the attributeattrName
- the attribute name- Returns:
- String value of the attribute (never null or empty)
- Throws:
IOException
- if attribute is missing or empty
-
setStringAttr
Sets a string attribute on the specified element.- Parameters:
ele
- JDom elementattrName
- name of attributeattrValue
- value of attribute, null ok
-
setIntAttr
Sets an integer attribute on the specified element.- Parameters:
ele
- JDom elementattrName
- name of attributeattrValue
- value of attribute
-
getChildren
Type-safe way of getting a list ofElement
s from JDom.- Parameters:
ele
- the parent elementchildName
- the name of the children elements to return- Returns:
- List<Element> of elements
-
hasInvalidXMLCharacters
Tests a string for characters that would cause a problem if added to an xml attribute or element.- Parameters:
s
- a string- Returns:
- boolean true if the string will cause a problem if added to an xml attribute or element.
-
createSecureSAXBuilder
public static org.jdom.input.SAXBuilder createSecureSAXBuilder(boolean validate, boolean needsDTD) Create aSAXBuilder
that is not susceptible to XXE. This configures the builder to ignore external entities.- Parameters:
validate
- indicates whether validation should occurneedsDTD
- false to disable doctype declarations altogether- Returns:
- the configured builder
-
createSecureSAXParserFactory
Create aSAXParserFactory
that is not susceptible to XXE. This configures the factory to ignore external entities.- Parameters:
needsDTD
- false to disable doctype declarations altogether- Returns:
- the configured factory
-