| javolution.xml.stream.XMLStreamReader
All known Subclasses: javolution.xml.stream.XMLStreamReaderImpl,
XMLStreamReader | public interface XMLStreamReader extends XMLStreamConstants(Code) | | This interface is similar to
javax.xml.stream.XMLStreamReader ; but it does not forces
dynamic allocation when parsing (its methods returns
CharArray CharArray instances instead of
String ).
Except for the speed (faster) and its real-time characteristics
the usage/behavior is about the same as its StAX counterpart.
The
CharArray CharArray instances returned by this reader
supports fast primitive conversions as illustrated below:[code]
// Creates a new reader (potentially recycled).
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(inputStream);
while (reader.getEventType() != XMLStreamConstants.END_DOCUMENT) {
switch (reader.next()) {
case XMLStreamConstants.START_ELEMENT:
if (reader.getLocalName().equals("Time")) {
// Reads primitive types (int) attributes directly (no memory allocation).
time.hour = reader.getAttributeValue("hour").toInt();
time.minute = reader.getAttributeValue("minute").toInt();
time.second = reader.getAttributeValue("second").toInt();
}
...
break;
}
}
reader.close(); // Recycles the reader.
inputStream.close(); // Underlying stream has to be closed explicitly.
[/code]
author: Jean-Marie Dautelle version: 4.0, September 4, 2006 |
Method Summary | |
public void | close() Frees any resources associated with this Reader. | public int | getAttributeCount() Returns the count of attributes on this START_ELEMENT, this method is
only valid on a START_ELEMENT or ATTRIBUTE. | public CharArray | getAttributeLocalName(int index) Returns the localName of the attribute at the provided index.
Parameters: index - the position of the attribute. | public CharArray | getAttributeNamespace(int index) Returns the namespace of the attribute at the provided index
Parameters: index - the position of the attribute. | public CharArray | getAttributePrefix(int index) Returns the prefix of this attribute at the provided index
Parameters: index - the position of the attribute. | public CharArray | getAttributeType(int index) Returns the XML type of the attribute at the provided index. | public CharArray | getAttributeValue(CharSequence namespaceURI, CharSequence localName) Returns the normalized attribute value of the attribute with the
namespace and localName. | public CharArray | getAttributeValue(int index) Returns the value of the attribute at the index.
Parameters: index - the position of the attribute. | public CharArray | getCharacterEncodingScheme() Returns the character encoding declared on the xml declaration. | public CharArray | getElementText() Reads the content of a text-only element, an exception is thrown if this
is not a text-only element. | public String | getEncoding() Returns the input encoding if known or null if unknown. | public int | getEventType() Returns an integer code that indicates the type of the event the cursor
is pointing to. | public CharArray | getLocalName() Returns the (local) name of the current event. | public Location | getLocation() Return the current location of the processor. | public NamespaceContext | getNamespaceContext() Returns a read only namespace context for the current position. | public int | getNamespaceCount() Returns the count of namespaces declared on this START_ELEMENT or
END_ELEMENT. | public CharArray | getNamespacePrefix(int index) Returns the prefix for the namespace declared at the index. | public CharArray | getNamespaceURI(CharSequence prefix) Returns the uri for the given prefix. | public CharArray | getNamespaceURI(int index) Returns the URI for the namespace declared at the index.
Parameters: index - the position of the namespace declaration. | public CharArray | getNamespaceURI() If the current event is a START_ELEMENT or END_ELEMENT this method
returns the URI of the current element (URI mapping to the prefix
element/attribute has; or if no prefix null ). | public CharArray | getPIData() Get the data section of a processing instruction. | public CharArray | getPITarget() Returns the target of a processing instruction. | public CharArray | getPrefix() Returns the prefix of the current event or null if the event does not
have a prefix. | public Object | getProperty(String name) Gets the value of a feature/property from the underlying implementation
Parameters: name - the name of the property. | public CharArray | getText() Returns the current value of the parse event as a string, this returns
the string value of a CHARACTERS event, returns the value of a COMMENT,
the replacement value for an ENTITY_REFERENCE, the string value of a
CDATA section, the string value for a SPACE event, or the String value of
the internal subset of the DTD. | public char[] | getTextCharacters() Returns an array which contains the characters from this event. | public int | getTextCharacters(int sourceStart, char[] target, int targetStart, int length) Gets the the text associated with a CHARACTERS, SPACE or CDATA event.
Text starting a "sourceStart" is copied into "target" starting at
"targetStart". | public int | getTextLength() Returns the length of the sequence of characters for this Text event
within the text character array. | public int | getTextStart() Returns the offset into the text character array where the first
character (of this text event) is stored. | public CharArray | getVersion() Gets the xml version declared on the xml declaration. | public boolean | hasName() Indicates if the current event has a name (is a START_ELEMENT or
END_ELEMENT). | public boolean | hasNext() Returns true if there are more parsing events and false if there are no
more events. | public boolean | hasText() Indicates if the current event has text. | public boolean | isAttributeSpecified(int index) Indicates if this attribute was created by default.
Parameters: index - the position of the attribute. | public boolean | isCharacters() Indicates if the cursor points to character data. | public boolean | isEndElement() Indicates if the cursor points to an end tag. | public boolean | isStandalone() Gets the standalone declaration from the xml declaration. | public boolean | isStartElement() Indicates if the cursor points to a start tag. | public boolean | isWhiteSpace() Indicates if the cursor points to character data that consists
of all whitespace. | public int | next() Gets next parsing event - contiguous character data is returned into a
single chunk.
By default entity references must be expanded and reported transparently
to the application. | public int | 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. | public void | require(int type, CharSequence namespaceURI, CharSequence localName) Tests 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. | public boolean | standaloneSet() Checks if standalone was set in the document. |
close | public void close() throws XMLStreamException(Code) | | Frees any resources associated with this Reader. This method does not
close the underlying input source.
throws: XMLStreamException - if there are errors freeing associatedresources |
getAttributeCount | public int getAttributeCount()(Code) | | Returns the count of attributes on this START_ELEMENT, this method is
only valid on a START_ELEMENT or ATTRIBUTE. This count excludes namespace
definitions. Attribute indices are zero-based.
returns the number of attributes. throws: IllegalStateException - if not a START_ELEMENT or ATTRIBUTE. |
getAttributeLocalName | public CharArray getAttributeLocalName(int index)(Code) | | Returns the localName of the attribute at the provided index.
Parameters: index - the position of the attribute. the localName of the attribute. throws: IllegalStateException - if not a START_ELEMENT or ATTRIBUTE. |
getAttributeNamespace | public CharArray getAttributeNamespace(int index)(Code) | | Returns the namespace of the attribute at the provided index
Parameters: index - the position of the attribute. the namespace URI or null if no prefix. throws: IllegalStateException - if not a START_ELEMENT or ATTRIBUTE. |
getAttributePrefix | public CharArray getAttributePrefix(int index)(Code) | | Returns the prefix of this attribute at the provided index
Parameters: index - the position of the attribute. the prefix of the attribute or null if no prefix. throws: IllegalStateException - if not a START_ELEMENT or ATTRIBUTE. |
getAttributeType | public CharArray getAttributeType(int index)(Code) | | Returns the XML type of the attribute at the provided index.
Parameters: index - the position of the attribute the XML type of the attribute. throws: IllegalStateException - if not a START_ELEMENT or ATTRIBUTE. |
getAttributeValue | public CharArray getAttributeValue(CharSequence namespaceURI, CharSequence localName)(Code) | | Returns the normalized attribute value of the attribute with the
namespace and localName.
Parameters: namespaceURI - the namespace of the attribute or null . Parameters: localName - the local name of the attribute. returns the value of the attribute or null . throws: IllegalStateException - if not a START_ELEMENT or ATTRIBUTE. |
getAttributeValue | public CharArray getAttributeValue(int index)(Code) | | Returns the value of the attribute at the index.
Parameters: index - the position of the attribute. the attribute value. throws: IllegalStateException - if not a START_ELEMENT or ATTRIBUTE. |
getCharacterEncodingScheme | public CharArray getCharacterEncodingScheme()(Code) | | Returns the character encoding declared on the xml declaration.
the encoding declared in the document or null |
getElementText | public CharArray getElementText() throws XMLStreamException(Code) | | Reads the content of a text-only element, an exception is thrown if this
is not a text-only element. Regardless of the 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();
throws: XMLStreamException - if the current event is not a START_ELEMENT or if a non text element is encountered. |
getEncoding | public String getEncoding()(Code) | | Returns the input encoding if known or null if unknown.
the encoding of this instance or null. |
getEventType | public int getEventType()(Code) | | Returns an integer code that indicates the type of the event the cursor
is pointing to.
the event type. |
getLocalName | public CharArray getLocalName()(Code) | | 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.
the localName. throws: IllegalStateException - if this not a START_ELEMENT, END_ELEMENT or ENTITY_REFERENCE |
getLocation | public Location getLocation()(Code) | | Return the current location of the processor. If the Location is unknown
the processor should return an implementation of Location that returns -1
for the location and null for the publicId and systemId. The location
information is only valid until next() is called.
the current location. |
getNamespaceContext | public NamespaceContext getNamespaceContext()(Code) | | Returns a read only namespace context for the current position.
return a namespace context |
getNamespaceCount | public int getNamespaceCount()(Code) | | Returns the count of namespaces declared on this START_ELEMENT or
END_ELEMENT. This method is only valid on a START_ELEMENT, END_ELEMENT or
NAMESPACE. On an END_ELEMENT the count is of the namespaces that are
about to go out of scope. This is the equivalent of the information
reported by SAX callback for an end element event.
returns the number of namespace declarations on this specificelement. throws: IllegalStateException - if not a START_ELEMENT or END_ELEMENT. |
getNamespacePrefix | public CharArray getNamespacePrefix(int index)(Code) | | Returns the prefix for the namespace declared at the index.
Parameters: index - the position of the namespace declaration. returns the namespace prefix or null if no prefix. throws: IllegalStateException - if this is not a START_ELEMENT, END_ELEMENT or NAMESPACE. |
getNamespaceURI | public CharArray getNamespaceURI(CharSequence prefix)(Code) | | Returns 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 - the prefix to lookup. the uri bound to the given prefix or null if it isnot bound |
getNamespaceURI | public CharArray getNamespaceURI(int index)(Code) | | Returns the URI for the namespace declared at the index.
Parameters: index - the position of the namespace declaration. returns the namespace uri or null if no prefix. throws: IllegalStateException - if this is not a START_ELEMENT, END_ELEMENT or NAMESPACE. |
getNamespaceURI | public CharArray getNamespaceURI()(Code) | | If the current event is a START_ELEMENT or END_ELEMENT this method
returns the URI of the current element (URI mapping to the prefix
element/attribute has; or if no prefix null ).
the URI bound to this elements prefix or null . throws: IllegalStateException - if not a START_ELEMENT, END_ELEMENT or ATTRIBUTE. |
getPrefix | public CharArray getPrefix()(Code) | | Returns the prefix of the current event or null if the event does not
have a prefix.
the prefix or null throws: IllegalStateException - if not a START_ELEMENT or END_ELEMENT. |
getProperty | public Object getProperty(String name) throws IllegalArgumentException(Code) | | Gets the value of a feature/property from the underlying implementation
Parameters: name - the name of the property. the value of the property. |
getText | public CharArray getText()(Code) | | Returns the current value of the parse event as a string, this returns
the string value of a CHARACTERS event, returns the value of a COMMENT,
the replacement value for an ENTITY_REFERENCE, the string value of a
CDATA section, the string value for a SPACE event, or the String value of
the internal subset of the DTD. If an ENTITY_REFERENCE has been resolved,
any character data will be reported as CHARACTERS events.
the current text or null throws: IllegalStateException - if this state is not a valid text state. |
getTextCharacters | public char[] getTextCharacters()(Code) | | 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.
the current text or an empty array. throws: IllegalStateException - if this state is not a valid text state. |
getTextCharacters | public int getTextCharacters(int sourceStart, char[] target, int targetStart, int length) throws XMLStreamException(Code) | | Gets the 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 - the index of te first character in the source array to copy Parameters: target - the destination array Parameters: targetStart - the start offset in the target array Parameters: length - the number of characters to copy the number of characters actually copied throws: XMLStreamException - if the XML source is not well-formed. throws: IndexOutOfBoundsException - if targetStart < 0 or > than the length of target throws: IndexOutOfBoundsException - if length < 0 or targetStart + length > length of target throws: UnsupportedOperationException - if this method is not supported. |
getTextLength | public int getTextLength()(Code) | | Returns the length of the sequence of characters for this Text event
within the text character array.
throws: IllegalStateException - if this state is not a valid text state. |
getTextStart | public int getTextStart()(Code) | | Returns the offset into the text character array where the first
character (of this text event) is stored.
throws: IllegalStateException - if this state is not a valid text state. |
getVersion | public CharArray getVersion()(Code) | | Gets the xml version declared on the xml declaration.
the XML version or null |
hasName | public boolean hasName()(Code) | | Indicates if the current event has a name (is a START_ELEMENT or
END_ELEMENT).
true if the current event has a name;false otherwise. |
hasNext | public boolean hasNext() throws XMLStreamException(Code) | | 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.
true if there are more events, false otherwise. throws: XMLStreamException - if there is a fatal error detecting the nextstate. |
hasText | public boolean hasText()(Code) | | Indicates if the current event has text. The following
events have text: CHARACTERS, DTD ,ENTITY_REFERENCE, COMMENT, SPACE.
true if the current event as text;false otherwise. |
isAttributeSpecified | public boolean isAttributeSpecified(int index)(Code) | | Indicates if this attribute was created by default.
Parameters: index - the position of the attribute. true if this is a default attribute;false otherwise. throws: IllegalStateException - if not a START_ELEMENT or ATTRIBUTE. |
isCharacters | public boolean isCharacters()(Code) | | Indicates if the cursor points to character data.
true if the cursor points to character data;false otherwise. |
isEndElement | public boolean isEndElement()(Code) | | Indicates if the cursor points to an end tag.
true if the cursor points to a end tag;false otherwise. |
isStandalone | public boolean isStandalone()(Code) | | Gets the standalone declaration from the xml declaration.
true if this is standalone; false otherwise. |
isStartElement | public boolean isStartElement()(Code) | | Indicates if the cursor points to a start tag.
true if the cursor points to a start tag;false otherwise. |
isWhiteSpace | public boolean isWhiteSpace()(Code) | | Indicates if the cursor points to character data that consists
of all whitespace.
true if the cursor points to whitespaces;false otherwise. |
next | public int next() throws XMLStreamException(Code) | | Gets next parsing event - contiguous character data is returned into a
single chunk.
By default entity references must be expanded and reported transparently
to the application. An exception will be thrown if an entity reference
cannot be expanded. If element content is empty (i.e. content is "") then
no CHARACTERS event will be reported.
Given the following XML:
<foo><!--description-->content
text<![CDATA[<greeting>Hello</greeting>]]>other content</foo>
The behavior of calling next() when being on foo will be:
1- the comment (COMMENT)
2- then the characters section (CHARACTERS)
3- then the CDATA section (another CHARACTERS)
4- then the next characters section (another CHARACTERS)
5- then the END_ELEMENT
NOTE: empty element (such as <tag/>) will be reported with two
separate events: START_ELEMENT, END_ELEMENT - This preserves parsing
equivalency of empty element to <tag></tag>.
This method will throw an IllegalStateException if it is called after
hasNext() returns false.
the integer code corresponding to the current parse event throws: NoSuchElementException - if this is called when hasNext() returns false throws: XMLStreamException - if there is an error processing the underlying XML source |
nextTag | public int nextTag() throws XMLStreamException(Code) | | 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 seperated 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;
the event type of the element read (START_ELEMENT or END_ELEMENT) throws: XMLStreamException - if the current event is not white space,PROCESSING_INSTRUCTION, START_ELEMENT or END_ELEMENT throws: NoSuchElementException - if this is called when hasNext() returns false |
require | public void require(int type, CharSequence namespaceURI, CharSequence localName) throws XMLStreamException(Code) | | Tests 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: type - the event type. Parameters: namespaceURI - the uri of the event, may be null. Parameters: localName - the localName of the event, may be null. throws: XMLStreamException - if the required values are not matched. |
standaloneSet | public boolean standaloneSet()(Code) | | Checks if standalone was set in the document.
true if standalone was set; false otherwise. |
|
|