Class XMLStreamBuffer
- java.lang.Object
-
- com.sun.xml.stream.buffer.XMLStreamBuffer
-
- Direct Known Subclasses:
MutableXMLStreamBuffer
,XMLStreamBufferMark
public abstract class XMLStreamBuffer extends Object
An immutable stream-based buffer of an XML infoset.A XMLStreamBuffer is an abstract class. It is immutable with respect to the methods on the class, which are non-modifying in terms of state.
A XMLStreamBuffer can be processed using specific SAX and StAX-based processors. Utility methods on XMLStreamBuffer are provided for such functionality that utilize SAX and StAX-based processors. The same instance of a XMLStreamBuffer may be processed multiple times and concurrently by more than one processor.
There are two concrete implementations of XMLStreamBuffer. The first,
MutableXMLStreamBuffer
, can be instantiated for the creation of a buffer using SAX and StAX-based creators, and from which may be processed as an XMLStreamBuffer. The second,XMLStreamBufferMark
, can be instantiated to mark into an existing buffer that is being created or processed. This allows a subtree ofXMLStreamBuffer
to be treated as its ownXMLStreamBuffer
.A XMLStreamBuffer can represent a complete XML infoset or a subtree of an XML infoset. It is also capable of representing a "forest", where the buffer represents multiple adjacent XML elements, although in this mode there are restrictions about how you can consume such forest, because not all XML APIs handle forests very well.
-
-
Field Summary
Fields Modifier and Type Field Description protected com.sun.xml.stream.buffer.FragmentedArray<char[]>
_contentCharactersBuffer
Fragmented array to hold content information in a shared char[]protected int
_contentCharactersBufferPtr
protected com.sun.xml.stream.buffer.FragmentedArray<Object[]>
_contentObjects
Fragmented array to hold content information as objectsprotected int
_contentObjectsPtr
protected boolean
_hasInternedStrings
True if the buffer was created from a parser that interns Strings as specified by the SAX interning featuresprotected Map<String,String>
_inscopeNamespaces
In scope namespaces on a fragmentprotected com.sun.xml.stream.buffer.FragmentedArray<byte[]>
_structure
Fragmented array to hold structural informationprotected int
_structurePtr
protected com.sun.xml.stream.buffer.FragmentedArray<String[]>
_structureStrings
Fragmented array to hold structural information as stringsprotected int
_structureStringsPtr
protected String
systemId
The system identifier associated with the bufferprotected int
treeCount
Number of trees in this stream buffer.
-
Constructor Summary
Constructors Constructor Description XMLStreamBuffer()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static XMLStreamBuffer
createNewBufferFromXMLReader(XMLReader reader, InputStream in)
Create a new buffer from aXMLReader
andInputStream
.static XMLStreamBuffer
createNewBufferFromXMLReader(XMLReader reader, InputStream in, String systemId)
Create a new buffer from aXMLReader
andInputStream
.static XMLStreamBuffer
createNewBufferFromXMLStreamReader(XMLStreamReader reader)
Create a new buffer from a XMLStreamReader.protected com.sun.xml.stream.buffer.FragmentedArray<char[]>
getContentCharactersBuffer()
protected int
getContentCharactersBufferPtr()
protected com.sun.xml.stream.buffer.FragmentedArray<Object[]>
getContentObjects()
protected int
getContentObjectsPtr()
Map<String,String>
getInscopeNamespaces()
Get the in-scope namespaces.protected com.sun.xml.stream.buffer.FragmentedArray<byte[]>
getStructure()
protected int
getStructurePtr()
protected com.sun.xml.stream.buffer.FragmentedArray<String[]>
getStructureStrings()
protected int
getStructureStringsPtr()
String
getSystemId()
Get the system identifier associated with the buffer.boolean
hasInternedStrings()
Has the buffer been created using Strings that have been interned for certain properties of information items.boolean
isCreated()
Is the buffer created by creator.boolean
isElementFragment()
Is the buffer a representation of a fragment of an XML infoset that is an element (and its contents).boolean
isForest()
Returns ture if this buffer represents a forest, which is are more than one adjacent XML elements.boolean
isFragment()
Is the buffer a representation of a fragment of an XML infoset.SAXBufferProcessor
readAsXMLReader()
Deprecated.SAXBufferProcessor
readAsXMLReader(boolean produceFragmentEvent)
Reads the contents of the buffer from aXMLReader
.StreamReaderBufferProcessor
readAsXMLStreamReader()
Read the contents of the buffer as aXMLStreamReader
.Node
writeTo(Node n)
Writes out the contents of this buffer as DOM node and append that to the given node.void
writeTo(ContentHandler handler)
Deprecated.void
writeTo(ContentHandler handler, boolean produceFragmentEvent)
Write the contents of the buffer to aContentHandler
.void
writeTo(ContentHandler handler, ErrorHandler errorHandler)
void
writeTo(ContentHandler handler, ErrorHandler errorHandler, boolean produceFragmentEvent)
Write the contents of the buffer to aContentHandler
with errors report to aErrorHandler
.void
writeToXMLStreamWriter(XMLStreamWriter writer)
Deprecated.void
writeToXMLStreamWriter(XMLStreamWriter writer, boolean writeAsFragment)
Write the contents of the buffer to an XMLStreamWriter.
-
-
-
Field Detail
-
_inscopeNamespaces
protected Map<String,String> _inscopeNamespaces
In scope namespaces on a fragment
-
_hasInternedStrings
protected boolean _hasInternedStrings
True if the buffer was created from a parser that interns Strings as specified by the SAX interning features
-
_structure
protected com.sun.xml.stream.buffer.FragmentedArray<byte[]> _structure
Fragmented array to hold structural information
-
_structurePtr
protected int _structurePtr
-
_structureStrings
protected com.sun.xml.stream.buffer.FragmentedArray<String[]> _structureStrings
Fragmented array to hold structural information as strings
-
_structureStringsPtr
protected int _structureStringsPtr
-
_contentCharactersBuffer
protected com.sun.xml.stream.buffer.FragmentedArray<char[]> _contentCharactersBuffer
Fragmented array to hold content information in a shared char[]
-
_contentCharactersBufferPtr
protected int _contentCharactersBufferPtr
-
_contentObjects
protected com.sun.xml.stream.buffer.FragmentedArray<Object[]> _contentObjects
Fragmented array to hold content information as objects
-
_contentObjectsPtr
protected int _contentObjectsPtr
-
treeCount
protected int treeCount
Number of trees in this stream buffer.1 if there's only one, which is the normal case. When the buffer holds a forest, this value is greater than 1. If the buffer is empty, then 0.
Notice that we cannot infer this value by looking at the
FragmentedArray
s, because thisXMLStreamBuffer
maybe a view of a portion of another biggerXMLStreamBuffer
.
-
systemId
protected String systemId
The system identifier associated with the buffer
-
-
Method Detail
-
isCreated
public final boolean isCreated()
Is the buffer created by creator.- Returns:
true
if the buffer has been created.
-
isFragment
public final boolean isFragment()
Is the buffer a representation of a fragment of an XML infoset.- Returns:
true
if the buffer is a representation of a fragment of an XML infoset.
-
isElementFragment
public final boolean isElementFragment()
Is the buffer a representation of a fragment of an XML infoset that is an element (and its contents).- Returns:
true
if the buffer a representation of a fragment of an XML infoset that is an element (and its contents).
-
isForest
public final boolean isForest()
Returns ture if this buffer represents a forest, which is are more than one adjacent XML elements.
-
getSystemId
public final String getSystemId()
Get the system identifier associated with the buffer.- Returns:
- The system identifier.
-
getInscopeNamespaces
public final Map<String,String> getInscopeNamespaces()
Get the in-scope namespaces.The in-scope namespaces will be empty if the buffer is not a fragment (
isFragment()
returnsfalse
). The in-scope namespace will correspond to the in-scope namespaces of the fragment if the buffer is a fragment (isFragment()
returnsfalse
). The in-scope namespaces will include any namespace delcarations on an element if the fragment correspond to that of an element (isElementFragment()
returnsfalse
).- Returns:
- The in-scope namespaces of the XMLStreamBuffer. Prefix to namespace URI.
-
hasInternedStrings
public final boolean hasInternedStrings()
Has the buffer been created using Strings that have been interned for certain properties of information items. The Strings that are interned are those that correspond to Strings that are specified by the SAX API "string-interning" property (see here).An buffer may have been created, for example, from an XML document parsed using the Xerces SAX parser. The Xerces SAX parser will have interned certain Strings according to the SAX string interning property. This method enables processors to avoid the duplication of String interning if such a feature is required by a procesing application and the buffer being processed was created using Strings that have been interned.
- Returns:
true
if the buffer has been created using Strings that have been interned.
-
readAsXMLStreamReader
public final StreamReaderBufferProcessor readAsXMLStreamReader() throws XMLStreamException
Read the contents of the buffer as aXMLStreamReader
.- Returns:
- A an instance of a
StreamReaderBufferProcessor
. Always non-null. - Throws:
XMLStreamException
-
writeToXMLStreamWriter
public final void writeToXMLStreamWriter(XMLStreamWriter writer, boolean writeAsFragment) throws XMLStreamException
Write the contents of the buffer to an XMLStreamWriter.The XMLStreamBuffer will be written out to the XMLStreamWriter using an instance of
StreamWriterBufferProcessor
.- Parameters:
writer
- A XMLStreamWriter to write to.writeAsFragment
- If true,XMLStreamWriter
will not receiveXMLStreamWriter.writeStartDocument()
norXMLStreamWriter.writeEndDocument()
. This is desirable behavior when you are writing the contents of a buffer into a bigger document.- Throws:
XMLStreamException
-
writeToXMLStreamWriter
public final void writeToXMLStreamWriter(XMLStreamWriter writer) throws XMLStreamException
Deprecated.- Throws:
XMLStreamException
-
readAsXMLReader
public final SAXBufferProcessor readAsXMLReader()
Deprecated.Reads the contents of the buffer from aXMLReader
.- Returns:
- A an instance of a
SAXBufferProcessor
.
-
readAsXMLReader
public final SAXBufferProcessor readAsXMLReader(boolean produceFragmentEvent)
Reads the contents of the buffer from aXMLReader
.- Parameters:
produceFragmentEvent
- True to generate fragment SAX events without start/endDocument. False to generate a full document SAX events.- Returns:
- A an instance of a
SAXBufferProcessor
.
-
writeTo
public final void writeTo(ContentHandler handler, boolean produceFragmentEvent) throws SAXException
Write the contents of the buffer to aContentHandler
.If the
handler
is also an instance of other SAX-based handlers, such asLexicalHandler
, than corresponding SAX events will be reported to those handlers.- Parameters:
handler
- The ContentHandler to receive SAX events.produceFragmentEvent
- True to generate fragment SAX events without start/endDocument. False to generate a full document SAX events.- Throws:
SAXException
- if a parsing fails, or ifContentHandler
throws aSAXException
.
-
writeTo
public final void writeTo(ContentHandler handler) throws SAXException
Deprecated.- Throws:
SAXException
-
writeTo
public final void writeTo(ContentHandler handler, ErrorHandler errorHandler, boolean produceFragmentEvent) throws SAXException
Write the contents of the buffer to aContentHandler
with errors report to aErrorHandler
.If the
handler
is also an instance of other SAX-based handlers, such asLexicalHandler
, than corresponding SAX events will be reported to those handlers.- Parameters:
handler
- The ContentHandler to receive SAX events.errorHandler
- The ErrorHandler to receive error events.- Throws:
SAXException
- if a parsing fails andErrorHandler
throws aSAXException
, or ifContentHandler
throws aSAXException
.
-
writeTo
public final void writeTo(ContentHandler handler, ErrorHandler errorHandler) throws SAXException
- Throws:
SAXException
-
writeTo
public final Node writeTo(Node n) throws XMLStreamBufferException
Writes out the contents of this buffer as DOM node and append that to the given node. Faster implementation would be desirable.- Returns:
- The newly added child node.
- Throws:
XMLStreamBufferException
-
createNewBufferFromXMLStreamReader
public static XMLStreamBuffer createNewBufferFromXMLStreamReader(XMLStreamReader reader) throws XMLStreamException
Create a new buffer from a XMLStreamReader.- Parameters:
reader
- A XMLStreamReader to read from to create.- Returns:
- XMLStreamBuffer the created buffer
- Throws:
XMLStreamException
- See Also:
MutableXMLStreamBuffer.createFromXMLStreamReader(XMLStreamReader)
-
createNewBufferFromXMLReader
public static XMLStreamBuffer createNewBufferFromXMLReader(XMLReader reader, InputStream in) throws SAXException, IOException
Create a new buffer from aXMLReader
andInputStream
.- Parameters:
reader
- TheXMLReader
to use for parsing.in
- TheInputStream
to be parsed.- Returns:
- XMLStreamBuffer the created buffer
- Throws:
SAXException
IOException
- See Also:
MutableXMLStreamBuffer.createFromXMLReader(XMLReader, InputStream)
-
createNewBufferFromXMLReader
public static XMLStreamBuffer createNewBufferFromXMLReader(XMLReader reader, InputStream in, String systemId) throws SAXException, IOException
Create a new buffer from aXMLReader
andInputStream
.- Parameters:
reader
- TheXMLReader
to use for parsing.in
- TheInputStream
to be parsed.systemId
- The system ID of the input stream.- Returns:
- XMLStreamBuffer the created buffer
- Throws:
SAXException
IOException
- See Also:
MutableXMLStreamBuffer.createFromXMLReader(XMLReader, InputStream, String)
-
getStructure
protected final com.sun.xml.stream.buffer.FragmentedArray<byte[]> getStructure()
-
getStructurePtr
protected final int getStructurePtr()
-
getStructureStrings
protected final com.sun.xml.stream.buffer.FragmentedArray<String[]> getStructureStrings()
-
getStructureStringsPtr
protected final int getStructureStringsPtr()
-
getContentCharactersBuffer
protected final com.sun.xml.stream.buffer.FragmentedArray<char[]> getContentCharactersBuffer()
-
getContentCharactersBufferPtr
protected final int getContentCharactersBufferPtr()
-
getContentObjects
protected final com.sun.xml.stream.buffer.FragmentedArray<Object[]> getContentObjects()
-
getContentObjectsPtr
protected final int getContentObjectsPtr()
-
-