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
Nested ClassesModifier and TypeClassDescriptionstatic class -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic org.jdom.ElementbyteArrayToXml(byte[] bytes) Converts the specified byte array into an XML element.static org.jdom.input.SAXBuildercreateSecureSAXBuilder(boolean validate, boolean needsDTD) Create aSAXBuilderthat is not susceptible to XXE.static SAXParserFactorycreateSecureSAXParserFactory(boolean needsDTD) Create aSAXParserFactorythat is not susceptible to XXE.static StringConverts any special or reserved characters in the specified XML string into the equivalent Unicode encoding.static org.jdom.ElementfromString(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 ofElements from JDom.static booleanTests a string for characters that would cause a problem if added to an xml attribute or element.static booleanparseBoolean(String boolStr) Parses the given string into a boolean value.static intparseBoundedInt(String intStr, int minValue, int maxValue) Parses the specified string as a decimal number, returning its integer value.static intparseBoundedIntAttr(org.jdom.Element ele, String attrName, int minValue, int maxValue) Parses the required attribute as a decimal number, returning its integer value.static longparseBoundedLong(String longStr, long minValue, long maxValue) Parses the specified string as a decimal number, returning its long integer value.static longparseBoundedLongAttr(org.jdom.Element ele, String attrName, long minValue, long maxValue) Parses the required attribute as a decimal number, returning its long integer value.static intParse the given string as either a hex number (if it starts with 0x) or a decimal number.static intParses the optional specified string as a decimal number, returning its integer value.static longParse the given string as either a hex number (if it starts with 0x) or a decimal number.static booleanparseOptionalBooleanAttr(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 intparseOptionalBoundedInt(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 intparseOptionalBoundedIntAttr(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 longparseOptionalBoundedLongAttr(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 StringparseOverlayName(String addrStr) Parses the overlay name from the specified address string.static org.jdom.DocumentRead a File and convert to jdom xml doc.static org.jdom.DocumentRead a File and convert to jdom xml doc.static StringrequireStringAttr(org.jdom.Element ele, String attrName) Throws anIOExceptionwith a verbose explanation if the requested attribute is not present or is empty.static voidsetIntAttr(org.jdom.Element ele, String attrName, int attrValue) Sets an integer attribute on the specified element.static voidsetStringAttr(org.jdom.Element ele, String attrName, String attrValue) Sets a string attribute on the specified element.static StringtoString(org.jdom.Element root) Converts the specified XML element into a String.static StringunEscapeElementEntities(String escapedXMLString) Converts any escaped character entities into their unescaped character equivalents.static voidwriteDocToFile(org.jdom.Document doc, File dest) Writes a JDOM XMLDocumentto aFile.static voidwritePrettyDocToFile(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.JDOMExceptionIOException
-
writeDocToFile
Writes a JDOM XMLDocumentto aFile.- Parameters:
doc- JDOM XMLDocumentto write.dest-Fileto write to.- Throws:
IOException- if error when writing file.
-
writePrettyDocToFile
- Parameters:
doc- JDOM XMLDocumentto write.dest-Fileto write to.- Throws:
IOException- if error when writing file.
-
readDocFromFile
Read a File and convert to jdom xml doc.- Parameters:
f-Fileto 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-ResourceFileto 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_VALUEand/orLong.MAX_VALUEas 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_VALUEand/orLong.MAX_VALUEas 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_VALUEand/orLong.MAX_VALUEas 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 anIOExceptionwith a verbose explanation if the requested attribute is not present or is empty.- Parameters:
ele- JDOMElementthat 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 ofElements 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 aSAXBuilderthat 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 aSAXParserFactorythat 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
-