Top Description Constructors Methods
org.springframework.util.xml

pack-priv abstract Class AbstractXMLStreamReader

extends Object
implements XMLStreamReader
Class Inheritance
All Implemented Interfaces
javax.xml.stream.XMLStreamReader, javax.xml.stream.XMLStreamConstants
Known Direct Subclasses
org.springframework.util.xml.XMLEventStreamReader
Imports
javax.xml.namespace.QName, javax.xml.stream.XMLStreamConstants, .XMLStreamException, .XMLStreamReader, org.springframework.lang.Nullable

Abstract base class for XMLStreamReaders.
Author
Arjen Poutsma
Since
3.0

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
public String
getAttributeLocalName(int
the position of the attribute
index
)

Implements javax.xml.stream.XMLStreamReader.getAttributeLocalName.

Returns the localName of the attribute at the provided index
public String
getAttributeNamespace(int
the position of the attribute
index
)

Implements javax.xml.stream.XMLStreamReader.getAttributeNamespace.

Returns the namespace of the attribute at the provided index
public String
getAttributePrefix(int
the position of the attribute
index
)

Implements javax.xml.stream.XMLStreamReader.getAttributePrefix.

Returns the prefix of this attribute at the provided index
public String
getAttributeValue(String
the namespace of the attribute
namespaceURI
,
String
the local name of the attribute, cannot be null
localName
)

Implements javax.xml.stream.XMLStreamReader.getAttributeValue.

Returns the normalized attribute value of the attribute with the namespace and localName If the namespaceURI is null the namespace is not checked for equality
public String
getElementText()

Implements javax.xml.stream.XMLStreamReader.getElementText.

Reads the content of a text-only element, an exception is thrown if this is not a text-only element.
public String
getLocalName()

Implements javax.xml.stream.XMLStreamReader.getLocalName.

Returns the (local) name of the current event.
public String
getNamespaceURI()

Implements javax.xml.stream.XMLStreamReader.getNamespaceURI.

If the current event is a START_ELEMENT or END_ELEMENT this method returns the URI of the prefix or the default namespace.
public String
getNamespaceURI(String
The prefix to lookup, may not be null
prefix
)

Implements javax.xml.stream.XMLStreamReader.getNamespaceURI.

Return the uri for the given prefix.
public String
getPrefix()

Implements javax.xml.stream.XMLStreamReader.getPrefix.

Returns the prefix of the current event or null if the event does not have a prefix
public char[]
getTextCharacters()

Implements javax.xml.stream.XMLStreamReader.getTextCharacters.

Returns an array which contains the characters from this event.
public int
getTextCharacters(int
the index of the first character in the source array to copy
sourceStart
,
char[]
the destination array
target
,
int
the start offset in the target array
targetStart
,
int
the number of characters to copy
length
)

Implements javax.xml.stream.XMLStreamReader.getTextCharacters.

Gets the text associated with a CHARACTERS, SPACE or CDATA event.
public int
getTextLength()

Implements javax.xml.stream.XMLStreamReader.getTextLength.

Returns the length of the sequence of characters for this Text event within the text character array.
public boolean
hasName()

Implements javax.xml.stream.XMLStreamReader.hasName.

returns a boolean indicating whether the current event has a name (is a START_ELEMENT or END_ELEMENT).
public boolean
hasNext()

Implements javax.xml.stream.XMLStreamReader.hasNext.

Returns true if there are more parsing events and false if there are no more events.
public boolean
hasText()

Implements javax.xml.stream.XMLStreamReader.hasText.

Return a boolean indicating whether the current event has text.
public boolean
isCharacters()

Implements javax.xml.stream.XMLStreamReader.isCharacters.

Returns true if the cursor points to a character data event
public boolean
isEndElement()

Implements javax.xml.stream.XMLStreamReader.isEndElement.

Returns true if the cursor points to an end tag (otherwise false)
public boolean
isStartElement()

Implements javax.xml.stream.XMLStreamReader.isStartElement.

Returns true if the cursor points to a start tag (otherwise false)
public boolean
isWhiteSpace()

Implements javax.xml.stream.XMLStreamReader.isWhiteSpace.

Returns true if the cursor points to a character data event that consists of all whitespace
public int
nextTag()

Implements javax.xml.stream.XMLStreamReader.nextTag.

Skips any white space (isWhiteSpace() returns true), COMMENT, or PROCESSING_INSTRUCTION, until a START_ELEMENT or END_ELEMENT is reached.
public void
require(int
the event type
expectedType
,
String
the uri of the event, may be null
namespaceURI
,
String
the localName of the event, may be null
localName
)

Implements javax.xml.stream.XMLStreamReader.require.

Test if the current event is of the given type and if the namespace and name match the current namespace and name of the current event.
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

AbstractXMLStreamReaderback to summary
pack-priv AbstractXMLStreamReader()

Method Detail

getAttributeLocalNameback to summary
public String getAttributeLocalName(int index)

Implements javax.xml.stream.XMLStreamReader.getAttributeLocalName.

Doc from javax.xml.stream.XMLStreamReader.getAttributeLocalName.

Returns the localName of the attribute at the provided index

Parameters
index:int

the position of the attribute

Returns:String

the localName of the attribute

Annotations
@Override
getAttributeNamespaceback to summary
public String getAttributeNamespace(int index)

Implements javax.xml.stream.XMLStreamReader.getAttributeNamespace.

Doc from javax.xml.stream.XMLStreamReader.getAttributeNamespace.

Returns the namespace of the attribute at the provided index

Parameters
index:int

the position of the attribute

Returns:String

the namespace URI (can be null)

Annotations
@Override
getAttributePrefixback to summary
public String getAttributePrefix(int index)

Implements javax.xml.stream.XMLStreamReader.getAttributePrefix.

Doc from javax.xml.stream.XMLStreamReader.getAttributePrefix.

Returns the prefix of this attribute at the provided index

Parameters
index:int

the position of the attribute

Returns:String

the prefix of the attribute

Annotations
@Override
getAttributeValueback to summary
public String getAttributeValue(String namespaceURI, String localName)

Implements javax.xml.stream.XMLStreamReader.getAttributeValue.

Doc from javax.xml.stream.XMLStreamReader.getAttributeValue.

Returns the normalized attribute value of the attribute with the namespace and localName If the namespaceURI is null the namespace is not checked for equality

Parameters
namespaceURI:String

the namespace of the attribute

localName:String

the local name of the attribute, cannot be null

Returns:String

returns the value of the attribute , returns null if not found

Annotations
@Override
@Nullable
getElementTextback to summary
public String getElementText() throws XMLStreamException

Implements javax.xml.stream.XMLStreamReader.getElementText.

Doc from javax.xml.stream.XMLStreamReader.getElementText.

Reads the content of a text-only element, an exception is thrown if this is not a text-only element. Regardless of value of javax.xml.stream.isCoalescing this method always returns coalesced content.
Precondition: the current event is START_ELEMENT.
Postcondition: the current event is the corresponding END_ELEMENT.
The method does the following (implementations are free to optimized but must do equivalent processing):

if(getEventType() != XMLStreamConstants.START_ELEMENT) {
    throw new XMLStreamException(
    "parser must be on START_ELEMENT to read next text", getLocation());
}

int eventType = next();
StringBuffer content = new StringBuffer();
while(eventType != XMLStreamConstants.END_ELEMENT) {
    if(eventType == XMLStreamConstants.CHARACTERS
       || eventType == XMLStreamConstants.CDATA
       || eventType == XMLStreamConstants.SPACE
       || eventType == XMLStreamConstants.ENTITY_REFERENCE) {
          buf.append(getText());
    } else if(eventType == XMLStreamConstants.PROCESSING_INSTRUCTION
              || eventType == XMLStreamConstants.COMMENT) {
        // skipping
    } else if(eventType == XMLStreamConstants.END_DOCUMENT) {
        throw new XMLStreamException(
        "unexpected end of document when reading element text content", this);
    } else if(eventType == XMLStreamConstants.START_ELEMENT) {
        throw new XMLStreamException(
        "element text content may not contain START_ELEMENT", getLocation());
    } else {
        throw new XMLStreamException(
        "Unexpected event type "+eventType, getLocation());
    }
    eventType = next();
}
return buf.toString();
Returns:String

the content of a text-only element

Annotations
@Override
Exceptions
XMLStreamException:
if the current event is not a START_ELEMENT or if a non text element is encountered
getLocalNameback to summary
public String getLocalName()

Implements javax.xml.stream.XMLStreamReader.getLocalName.

Doc from javax.xml.stream.XMLStreamReader.getLocalName.

Returns the (local) name of the current event. For START_ELEMENT or END_ELEMENT returns the (local) name of the current element. For ENTITY_REFERENCE it returns entity name. The current event must be START_ELEMENT or END_ELEMENT, or ENTITY_REFERENCE

Returns:String

the localName

Annotations
@Override
getNamespaceURIback to summary
public String getNamespaceURI()

Implements javax.xml.stream.XMLStreamReader.getNamespaceURI.

Doc from javax.xml.stream.XMLStreamReader.getNamespaceURI.

If the current event is a START_ELEMENT or END_ELEMENT this method returns the URI of the prefix or the default namespace. Returns null if the event does not have a prefix.

Returns:String

the URI bound to this elements prefix, the default namespace, or null

Annotations
@Override
getNamespaceURIback to summary
public String getNamespaceURI(String prefix)

Implements javax.xml.stream.XMLStreamReader.getNamespaceURI.

Doc from javax.xml.stream.XMLStreamReader.getNamespaceURI.

Return the uri for the given prefix. The uri returned depends on the current state of the processor.

Note

The 'xml' prefix is bound as defined in Namespaces in XML specification to "http://www.w3.org/XML/1998/namespace".

Note

The 'xmlns' prefix must be resolved to following namespace http://www.w3.org/2000/xmlns/

Parameters
prefix:String

The prefix to lookup, may not be null

Returns:String

the uri bound to the given prefix or null if it is not bound

Annotations
@Override
getPrefixback to summary
public String getPrefix()

Implements javax.xml.stream.XMLStreamReader.getPrefix.

Doc from javax.xml.stream.XMLStreamReader.getPrefix.

Returns the prefix of the current event or null if the event does not have a prefix

Returns:String

the prefix or null

Annotations
@Override
getTextCharactersback to summary
public char[] getTextCharacters()

Implements javax.xml.stream.XMLStreamReader.getTextCharacters.

Doc from javax.xml.stream.XMLStreamReader.getTextCharacters.

Returns an array which contains the characters from this event. This array should be treated as read-only and transient. I.e. the array will contain the text characters until the XMLStreamReader moves on to the next event. Attempts to hold onto the character array beyond that time or modify the contents of the array are breaches of the contract for this interface.

Returns:char[]

the current text or an empty array

Annotations
@Override
getTextCharactersback to summary
public int getTextCharacters(int sourceStart, char[] target, int targetStart, int length)

Implements javax.xml.stream.XMLStreamReader.getTextCharacters.

Doc from javax.xml.stream.XMLStreamReader.getTextCharacters.

Gets the text associated with a CHARACTERS, SPACE or CDATA event. Text starting a "sourceStart" is copied into "target" starting at "targetStart". Up to "length" characters are copied. The number of characters actually copied is returned. The "sourceStart" argument must be greater or equal to 0 and less than or equal to the number of characters associated with the event. Usually, one requests text starting at a "sourceStart" of 0. If the number of characters actually copied is less than the "length", then there is no more text. Otherwise, subsequent calls need to be made until all text has been retrieved. For example:

int length = 1024;
char[] myBuffer = new char[ length ];

for ( int sourceStart = 0 ; ; sourceStart += length )
{
   int nCopied = stream.getTextCharacters( sourceStart, myBuffer, 0, length );

  if (nCopied < length)
      break;
}
 
XMLStreamException may be thrown if there are any XML errors in the underlying source. The "targetStart" argument must be greater than or equal to 0 and less than the length of "target", Length must be greater than 0 and "targetStart + length" must be less than or equal to length of "target".
Parameters
sourceStart:int

the index of the first character in the source array to copy

target:char[]

the destination array

targetStart:int

the start offset in the target array

length:int

the number of characters to copy

Returns:int

the number of characters actually copied

Annotations
@Override
getTextLengthback to summary
public int getTextLength()

Implements javax.xml.stream.XMLStreamReader.getTextLength.

Doc from javax.xml.stream.XMLStreamReader.getTextLength.

Returns the length of the sequence of characters for this Text event within the text character array.

Returns:int

the length of the text

Annotations
@Override
hasNameback to summary
public boolean hasName()

Implements javax.xml.stream.XMLStreamReader.hasName.

Doc from javax.xml.stream.XMLStreamReader.hasName.

returns a boolean indicating whether the current event has a name (is a START_ELEMENT or END_ELEMENT).

Returns:boolean

true if the event has a name, false otherwise

Annotations
@Override
hasNextback to summary
public boolean hasNext()

Implements javax.xml.stream.XMLStreamReader.hasNext.

Doc from javax.xml.stream.XMLStreamReader.hasNext.

Returns true if there are more parsing events and false if there are no more events. This method will return false if the current state of the XMLStreamReader is END_DOCUMENT

Returns:boolean

true if there are more events, false otherwise

Annotations
@Override
hasTextback to summary
public boolean hasText()

Implements javax.xml.stream.XMLStreamReader.hasText.

Doc from javax.xml.stream.XMLStreamReader.hasText.

Return a boolean indicating whether the current event has text. The following events have text: CHARACTERS,DTD ,ENTITY_REFERENCE, COMMENT, SPACE

Returns:boolean

true if the event has text, false otherwise

Annotations
@Override
isCharactersback to summary
public boolean isCharacters()

Implements javax.xml.stream.XMLStreamReader.isCharacters.

Doc from javax.xml.stream.XMLStreamReader.isCharacters.

Returns true if the cursor points to a character data event

Returns:boolean

true if the cursor points to character data, false otherwise

Annotations
@Override
isEndElementback to summary
public boolean isEndElement()

Implements javax.xml.stream.XMLStreamReader.isEndElement.

Doc from javax.xml.stream.XMLStreamReader.isEndElement.

Returns true if the cursor points to an end tag (otherwise false)

Returns:boolean

true if the cursor points to an end tag, false otherwise

Annotations
@Override
isStartElementback to summary
public boolean isStartElement()

Implements javax.xml.stream.XMLStreamReader.isStartElement.

Doc from javax.xml.stream.XMLStreamReader.isStartElement.

Returns true if the cursor points to a start tag (otherwise false)

Returns:boolean

true if the cursor points to a start tag, false otherwise

Annotations
@Override
isWhiteSpaceback to summary
public boolean isWhiteSpace()

Implements javax.xml.stream.XMLStreamReader.isWhiteSpace.

Doc from javax.xml.stream.XMLStreamReader.isWhiteSpace.

Returns true if the cursor points to a character data event that consists of all whitespace

Returns:boolean

true if the cursor points to all whitespace, false otherwise

Annotations
@Override
nextTagback to summary
public int nextTag() throws XMLStreamException

Implements javax.xml.stream.XMLStreamReader.nextTag.

Doc from javax.xml.stream.XMLStreamReader.nextTag.

Skips any white space (isWhiteSpace() returns true), COMMENT, or PROCESSING_INSTRUCTION, until a START_ELEMENT or END_ELEMENT is reached. If other than white space characters, COMMENT, PROCESSING_INSTRUCTION, START_ELEMENT, END_ELEMENT are encountered, an exception is thrown. This method should be used when processing element-only content separated by white space.
Precondition: none
Postcondition: the current event is START_ELEMENT or END_ELEMENT and cursor may have moved over any whitespace event.
Essentially it does the following (implementations are free to optimized but must do equivalent processing):

 int eventType = next();
while((eventType == XMLStreamConstants.CHARACTERS && isWhiteSpace()) // skip whitespace
|| (eventType == XMLStreamConstants.CDATA && isWhiteSpace())
// skip whitespace
|| eventType == XMLStreamConstants.SPACE
|| eventType == XMLStreamConstants.PROCESSING_INSTRUCTION
|| eventType == XMLStreamConstants.COMMENT
) {
    eventType = next();
}
if (eventType != XMLStreamConstants.START_ELEMENT && eventType != XMLStreamConstants.END_ELEMENT) {
    throw new String XMLStreamException("expected start or end tag", getLocation());
}
return eventType; 
Returns:int

the event type of the element read (START_ELEMENT or END_ELEMENT)

Annotations
@Override
Exceptions
XMLStreamException:
if the current event is not white space, PROCESSING_INSTRUCTION, START_ELEMENT or END_ELEMENT
requireback to summary
public void require(int expectedType, String namespaceURI, String localName) throws XMLStreamException

Implements javax.xml.stream.XMLStreamReader.require.

Doc from javax.xml.stream.XMLStreamReader.require.

Test if the current event is of the given type and if the namespace and name match the current namespace and name of the current event. If the namespaceURI is null it is not checked for equality, if the localName is null it is not checked for equality.

Parameters
expectedType:int

the event type

namespaceURI:String

the uri of the event, may be null

localName:String

the localName of the event, may be null

Annotations
@Override
Exceptions
XMLStreamException:
if the required values are not matched.