Package org.json
Class XML
java.lang.Object
org.json.XML
This provides static methods to convert an XML text into a JSONObject, and to
covert a JSONObject into an XML text.
- Version:
- 2016-08-10
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Character
The Character '&'.static final Character
The Character '''.static final Character
The Character '!'.static final Character
The Character '='.static final Character
The Characterstatic final Character
The Character '<'.static final String
Null attribute namestatic final Character
The Character '?'.static final Character
The Character '"'.static final Character
The Character '/'.static final String
Represents the XML attribute name for specifying type information. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncodePointIterator
(String string) Creates an iterator for navigating Code Points in a string instead of characters.static String
Replace special characters with XML escapes:private static final String
indent
(int indent) Return a String consisting of a number of space characters specified by indentprivate static boolean
isDecimalNotation
(String val) direct copy ofJSONObject.isDecimalNotation(String)
to maintain Android support.private static boolean
private static boolean
mustEscape
(int cp) static void
Throw an exception if the string contains whitespace.private static boolean
parse
(XMLTokener x, JSONObject context, String name, XMLParserConfiguration config, int currentNestingDepth) Scan the content following the named tag, attaching it to the context.private static void
removeEmpty
(JSONObject jsonObject, XMLParserConfiguration config) This method removes any JSON entry which has the key set by XMLParserConfiguration.cDataTagName and contains whitespace as this is caused by whitespace between tags.private static Number
stringToNumber
(String val) direct copy ofJSONObject.stringToNumber(String)
to maintain Android support.static Object
stringToValue
(String string) This method is the same asJSONObject.stringToValue(String)
.static Object
stringToValue
(String string, XMLXsiTypeConverter<?> typeConverter) This method tries to convert the given string value to the target objectstatic JSONObject
toJSONObject
(Reader reader) Convert a well-formed (but not necessarily valid) XML into a JSONObject.static JSONObject
toJSONObject
(Reader reader, boolean keepStrings) Convert a well-formed (but not necessarily valid) XML into a JSONObject.static JSONObject
toJSONObject
(Reader reader, XMLParserConfiguration config) Convert a well-formed (but not necessarily valid) XML into a JSONObject.static JSONObject
toJSONObject
(String string) Convert a well-formed (but not necessarily valid) XML string into a JSONObject.static JSONObject
toJSONObject
(String string, boolean keepStrings) Convert a well-formed (but not necessarily valid) XML string into a JSONObject.static JSONObject
toJSONObject
(String string, XMLParserConfiguration config) Convert a well-formed (but not necessarily valid) XML string into a JSONObject.static String
Convert a JSONObject into a well-formed, element-normal XML string.static String
Convert a JSONObject into a well-formed, pretty printed element-normal XML string.static String
Convert a JSONObject into a well-formed, element-normal XML string.static String
Convert a JSONObject into a well-formed, pretty printed element-normal XML string.static String
toString
(Object object, String tagName, XMLParserConfiguration config) Convert a JSONObject into a well-formed, element-normal XML string.static String
toString
(Object object, String tagName, XMLParserConfiguration config, int indentFactor) Convert a JSONObject into a well-formed, pretty printed element-normal XML string.private static String
toString
(Object object, String tagName, XMLParserConfiguration config, int indentFactor, int indent) Convert a JSONObject into a well-formed, element-normal XML string, either pretty print or single-lined depending on indent factor.static String
Removes XML escapes from the string.
-
Field Details
-
AMP
The Character '&'. -
APOS
The Character '''. -
BANG
The Character '!'. -
EQ
The Character '='. -
GT
The Character'>'.
-
LT
The Character '<'. -
QUEST
The Character '?'. -
QUOT
The Character '"'. -
SLASH
The Character '/'. -
NULL_ATTR
Null attribute name- See Also:
-
TYPE_ATTR
Represents the XML attribute name for specifying type information.- See Also:
-
-
Constructor Details
-
XML
public XML()Constructs a new XML object.
-
-
Method Details
-
codePointIterator
Creates an iterator for navigating Code Points in a string instead of characters. Once Java7 support is dropped, this can be replaced withstring.codePoints()
which is available in Java8 and above.- See Also:
-
escape
Replace special characters with XML escapes:& (ampersand) is replaced by &amp; < (less than) is replaced by &lt; > (greater than) is replaced by &gt; " (double quote) is replaced by &quot; ' (single quote / apostrophe) is replaced by &apos;
- Parameters:
string
- The string to be escaped.- Returns:
- The escaped string.
-
mustEscape
private static boolean mustEscape(int cp) - Parameters:
cp
- code point to test- Returns:
- true if the code point is not valid for an XML
-
unescape
Removes XML escapes from the string.- Parameters:
string
- string to remove escapes from- Returns:
- string with converted entities
-
noSpace
Throw an exception if the string contains whitespace. Whitespace is not allowed in tagNames and attributes.- Parameters:
string
- A string.- Throws:
JSONException
- Thrown if the string contains whitespace or is empty.
-
parse
private static boolean parse(XMLTokener x, JSONObject context, String name, XMLParserConfiguration config, int currentNestingDepth) throws JSONException Scan the content following the named tag, attaching it to the context.- Parameters:
x
- The XMLTokener containing the source string.context
- The JSONObject that will include the new material.name
- The tag name.config
- The XML parser configuration.currentNestingDepth
- The current nesting depth.- Returns:
- true if the close tag is processed.
- Throws:
JSONException
- Thrown if any parsing error occurs.
-
removeEmpty
This method removes any JSON entry which has the key set by XMLParserConfiguration.cDataTagName and contains whitespace as this is caused by whitespace between tags. See test XMLTest.testNestedWithWhitespaceTrimmingDisabled.- Parameters:
jsonObject
- JSONObject which may require deletionconfig
- The XMLParserConfiguration which includes the cDataTagName
-
isStringAllWhiteSpace
-
stringToNumber
direct copy ofJSONObject.stringToNumber(String)
to maintain Android support.- Throws:
NumberFormatException
-
isDecimalNotation
direct copy ofJSONObject.isDecimalNotation(String)
to maintain Android support. -
stringToValue
This method tries to convert the given string value to the target object- Parameters:
string
- String to converttypeConverter
- value converter to convert string to integer, boolean e.t.c- Returns:
- JSON value of this string or the string
-
stringToValue
This method is the same asJSONObject.stringToValue(String)
.- Parameters:
string
- String to convert- Returns:
- JSON value of this string or the string
-
toJSONObject
Convert a well-formed (but not necessarily valid) XML string into a JSONObject. Some information may be lost in this transformation because JSON is a data format and XML is a document format. XML uses elements, attributes, and content text, while JSON uses unordered collections of name/value pairs and arrays of values. JSON does not does not like to distinguish between elements and attributes. Sequences of similar elements are represented as JSONArrays. Content text may be placed in a "content" member. Comments, prologs, DTDs, and
are ignored.<[ [ ]]>
- Parameters:
string
- The source string.- Returns:
- A JSONObject containing the structured data from the XML string.
- Throws:
JSONException
- Thrown if there is an errors while parsing the string
-
toJSONObject
Convert a well-formed (but not necessarily valid) XML into a JSONObject. Some information may be lost in this transformation because JSON is a data format and XML is a document format. XML uses elements, attributes, and content text, while JSON uses unordered collections of name/value pairs and arrays of values. JSON does not does not like to distinguish between elements and attributes. Sequences of similar elements are represented as JSONArrays. Content text may be placed in a "content" member. Comments, prologs, DTDs, and
are ignored.<[ [ ]]>
- Parameters:
reader
- The XML source reader.- Returns:
- A JSONObject containing the structured data from the XML string.
- Throws:
JSONException
- Thrown if there is an errors while parsing the string
-
toJSONObject
Convert a well-formed (but not necessarily valid) XML into a JSONObject. Some information may be lost in this transformation because JSON is a data format and XML is a document format. XML uses elements, attributes, and content text, while JSON uses unordered collections of name/value pairs and arrays of values. JSON does not does not like to distinguish between elements and attributes. Sequences of similar elements are represented as JSONArrays. Content text may be placed in a "content" member. Comments, prologs, DTDs, and
are ignored. All values are converted as strings, for 1, 01, 29.0 will not be coerced to numbers but will instead be the exact value as seen in the XML document.<[ [ ]]>
- Parameters:
reader
- The XML source reader.keepStrings
- If true, then values will not be coerced into boolean or numeric values and will instead be left as strings- Returns:
- A JSONObject containing the structured data from the XML string.
- Throws:
JSONException
- Thrown if there is an errors while parsing the string
-
toJSONObject
public static JSONObject toJSONObject(Reader reader, XMLParserConfiguration config) throws JSONException Convert a well-formed (but not necessarily valid) XML into a JSONObject. Some information may be lost in this transformation because JSON is a data format and XML is a document format. XML uses elements, attributes, and content text, while JSON uses unordered collections of name/value pairs and arrays of values. JSON does not does not like to distinguish between elements and attributes. Sequences of similar elements are represented as JSONArrays. Content text may be placed in a "content" member. Comments, prologs, DTDs, and
are ignored. All values are converted as strings, for 1, 01, 29.0 will not be coerced to numbers but will instead be the exact value as seen in the XML document.<[ [ ]]>
- Parameters:
reader
- The XML source reader.config
- Configuration options for the parser- Returns:
- A JSONObject containing the structured data from the XML string.
- Throws:
JSONException
- Thrown if there is an errors while parsing the string
-
toJSONObject
Convert a well-formed (but not necessarily valid) XML string into a JSONObject. Some information may be lost in this transformation because JSON is a data format and XML is a document format. XML uses elements, attributes, and content text, while JSON uses unordered collections of name/value pairs and arrays of values. JSON does not does not like to distinguish between elements and attributes. Sequences of similar elements are represented as JSONArrays. Content text may be placed in a "content" member. Comments, prologs, DTDs, and
are ignored. All values are converted as strings, for 1, 01, 29.0 will not be coerced to numbers but will instead be the exact value as seen in the XML document.<[ [ ]]>
- Parameters:
string
- The source string.keepStrings
- If true, then values will not be coerced into boolean or numeric values and will instead be left as strings- Returns:
- A JSONObject containing the structured data from the XML string.
- Throws:
JSONException
- Thrown if there is an errors while parsing the string
-
toJSONObject
public static JSONObject toJSONObject(String string, XMLParserConfiguration config) throws JSONException Convert a well-formed (but not necessarily valid) XML string into a JSONObject. Some information may be lost in this transformation because JSON is a data format and XML is a document format. XML uses elements, attributes, and content text, while JSON uses unordered collections of name/value pairs and arrays of values. JSON does not does not like to distinguish between elements and attributes. Sequences of similar elements are represented as JSONArrays. Content text may be placed in a "content" member. Comments, prologs, DTDs, and
are ignored. All values are converted as strings, for 1, 01, 29.0 will not be coerced to numbers but will instead be the exact value as seen in the XML document.<[ [ ]]>
- Parameters:
string
- The source string.config
- Configuration options for the parser.- Returns:
- A JSONObject containing the structured data from the XML string.
- Throws:
JSONException
- Thrown if there is an errors while parsing the string
-
toString
Convert a JSONObject into a well-formed, element-normal XML string.- Parameters:
object
- A JSONObject.- Returns:
- A string.
- Throws:
JSONException
- Thrown if there is an error parsing the string
-
toString
Convert a JSONObject into a well-formed, element-normal XML string.- Parameters:
object
- A JSONObject.tagName
- The optional name of the enclosing tag.- Returns:
- A string.
- Throws:
JSONException
- Thrown if there is an error parsing the string
-
toString
public static String toString(Object object, String tagName, XMLParserConfiguration config) throws JSONException Convert a JSONObject into a well-formed, element-normal XML string.- Parameters:
object
- A JSONObject.tagName
- The optional name of the enclosing tag.config
- Configuration that can control output to XML.- Returns:
- A string.
- Throws:
JSONException
- Thrown if there is an error parsing the string
-
toString
private static String toString(Object object, String tagName, XMLParserConfiguration config, int indentFactor, int indent) throws JSONException Convert a JSONObject into a well-formed, element-normal XML string, either pretty print or single-lined depending on indent factor.- Parameters:
object
- A JSONObject.tagName
- The optional name of the enclosing tag.config
- Configuration that can control output to XML.indentFactor
- The number of spaces to add to each level of indentation.indent
- The current ident level in spaces.- Returns:
- Throws:
JSONException
-
toString
Convert a JSONObject into a well-formed, pretty printed element-normal XML string.- Parameters:
object
- A JSONObject.indentFactor
- The number of spaces to add to each level of indentation.- Returns:
- A string.
- Throws:
JSONException
- Thrown if there is an error parsing the string
-
toString
Convert a JSONObject into a well-formed, pretty printed element-normal XML string.- Parameters:
object
- A JSONObject.tagName
- The optional name of the enclosing tag.indentFactor
- The number of spaces to add to each level of indentation.- Returns:
- A string.
- Throws:
JSONException
- Thrown if there is an error parsing the string
-
toString
public static String toString(Object object, String tagName, XMLParserConfiguration config, int indentFactor) throws JSONException Convert a JSONObject into a well-formed, pretty printed element-normal XML string.- Parameters:
object
- A JSONObject.tagName
- The optional name of the enclosing tag.config
- Configuration that can control output to XML.indentFactor
- The number of spaces to add to each level of indentation.- Returns:
- A string.
- Throws:
JSONException
- Thrown if there is an error parsing the string
-
indent
Return a String consisting of a number of space characters specified by indent- Parameters:
indent
- The number of spaces to be appended to the String.- Returns:
-