Package org.apache.axiom.util.stax
Class XMLStreamReaderUtils
java.lang.Object
org.apache.axiom.util.stax.XMLStreamReaderUtils
Contains utility methods to work with
XMLStreamReader
objects, including the extension
defined by BlobReader
.-
Method Summary
Modifier and TypeMethodDescriptionstatic Blob
getBlobFromElement
(XMLStreamReader reader) Get aBlob
for the binary data encoded in an element.static BlobReader
getBlobReader
(XMLStreamReader reader) Get theBlobReader
extension for a givenXMLStreamReader
, if available.static Reader
getElementTextAsStream
(XMLStreamReader reader, boolean allowNonTextChildren) Get the text content of the current element as aReader
object.static XMLStreamReader
Deprecated.As of version 1.3.0, Axiom no longer permits access to the original stream reader.static Object
processGetProperty
(BlobReader extension, String propertyName) Helper method to implementXMLStreamReader.getProperty(String)
.static void
writeTextTo
(XMLStreamReader reader, Writer writer) Get the character data for the current event from the given reader and write it to the given writer.
-
Method Details
-
getBlobReader
Get theBlobReader
extension for a givenXMLStreamReader
, if available.- Parameters:
reader
- the stream reader to get theBlobReader
extension from- Returns:
- the implementation of the extension, or
null
if theXMLStreamReader
doesn't expose base64 encoded binary content asBlob
objects.
-
processGetProperty
Helper method to implementXMLStreamReader.getProperty(String)
. This method processes the property defined byBlobReader.PROPERTY
.- Parameters:
extension
- the reference to theBlobReader
extension for theXMLStreamReader
implementationpropertyName
- the name of the property, as passed to theXMLStreamReader.getProperty(String)
method- Returns:
- the property value as specified by the
BlobReader
extension;null
if the property doesn't match
-
getBlobFromElement
Get aBlob
for the binary data encoded in an element. The method supports base64 encoded character data as well as optimized binary data through theBlobReader
extension.Precondition: the reader is on a
XMLStreamConstants.START_ELEMENT
Postcondition: the reader is on the corresponding
XMLStreamConstants.END_ELEMENT
- Parameters:
reader
- the stream to read the data from- Returns:
- the binary data from the element
- Throws:
XMLStreamException
-
writeTextTo
public static void writeTextTo(XMLStreamReader reader, Writer writer) throws XMLStreamException, IOException Get the character data for the current event from the given reader and write it to the given writer. The method will try to figure out the most efficient way to copy the data without unnecessary buffering or conversions between strings and character arrays.- Parameters:
reader
- the reader to get the character data fromwriter
- the writer to write the character data to- Throws:
XMLStreamException
- if the underlying XML source is not well-formedIOException
- if an I/O error occurs when writing the character dataIllegalStateException
- if this state is not a valid text state.- See Also:
-
getElementTextAsStream
Get the text content of the current element as aReader
object.- Parameters:
reader
- The XML stream reader to read the element text from. The reader must be positioned on aXMLStreamConstants.START_ELEMENT
event.allowNonTextChildren
- If set totrue
, non text child nodes are allowed and skipped. If set tofalse
only text nodes are allowed and the presence of any other type of child node will trigger an exception.- Returns:
- The reader from which the element text can be read. After the reader has reported the
end of the stream, the XML stream reader will be positioned on the
XMLStreamConstants.END_ELEMENT
event corresponding to the initialXMLStreamConstants.START_ELEMENT
event. CallingReader.close()
on the returned reader has no effect. Any parser exception will be reported by the reader usingXMLStreamIOException
. - Throws:
IllegalStateException
- if the XML stream reader is not positioned on aXMLStreamConstants.START_ELEMENT
event
-
getOriginalXMLStreamReader
Deprecated.As of version 1.3.0, Axiom no longer permits access to the original stream reader.Searches the wrapper and delegate classes to find the originalXMLStreamReader
. This method should only be used when a consumer of Axiom really needs to access the original stream reader.- Parameters:
parser
- XMLStreamReader used by Axiom- Returns:
- original parser
-