class NamespaceContextCorrectingXMLStreamWriterWrapper extends AbstractXMLStreamWriter
XMLStreamWriter wrapper that handles namespace bindings on behalf of the underlying
writer. This wrapper can be used to correct two issues found in some stream writer
implementations:
XMLStreamWriter.setPrefix(String, String) or
XMLStreamWriter.setDefaultNamespace(String) is limited to
"the current START_ELEMENT / END_ELEMENT pair". Some implementations
such as early versions of XL XP-J don't satisfy this requirement.
XMLStreamWriter.getPrefix(String) method
(and the corresponding methods in the namespace context returned by
XMLStreamWriter.getNamespaceContext()) must not return a prefix that
is bound to a different namespace URI in a nested scope. Some implementations such as
the StAX reference implementation fail to meet this requirement.
Invocations of the following methods will be completely processed by the wrapper, and will never reach the underlying writer:
XMLStreamWriter.getNamespaceContext()
XMLStreamWriter.setNamespaceContext(NamespaceContext)
XMLStreamWriter.getPrefix(String)
XMLStreamWriter.setDefaultNamespace(String)
XMLStreamWriter.setPrefix(String, String)
The following methods rely on information from the namespace context to choose a the namespace prefix; the wrapper redirects invocations of these methods to the corresponding variants taking an explicit prefix parameter:
XMLStreamWriter.writeStartElement(String, String)
XMLStreamWriter.writeAttribute(String, String, String)
XMLStreamWriter.writeEmptyElement(String, String)
This implies that if the wrapper is used, these methods will never be called on the underlying writer.
| Modifier and Type | Field and Description |
|---|---|
private javax.xml.stream.XMLStreamWriter |
parent |
| Constructor and Description |
|---|
NamespaceContextCorrectingXMLStreamWriterWrapper(javax.xml.stream.XMLStreamWriter parent) |
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
protected void |
doWriteAttribute(java.lang.String localName,
java.lang.String value) |
protected void |
doWriteAttribute(java.lang.String prefix,
java.lang.String namespaceURI,
java.lang.String localName,
java.lang.String value) |
protected void |
doWriteCData(java.lang.String data) |
protected void |
doWriteCharacters(char[] text,
int start,
int len) |
protected void |
doWriteCharacters(java.lang.String text) |
protected void |
doWriteComment(java.lang.String data) |
protected void |
doWriteDefaultNamespace(java.lang.String namespaceURI) |
protected void |
doWriteDTD(java.lang.String dtd) |
protected void |
doWriteEmptyElement(java.lang.String localName) |
protected void |
doWriteEmptyElement(java.lang.String prefix,
java.lang.String localName,
java.lang.String namespaceURI) |
protected void |
doWriteEndDocument() |
protected void |
doWriteEndElement() |
protected void |
doWriteEntityRef(java.lang.String name) |
protected void |
doWriteNamespace(java.lang.String prefix,
java.lang.String namespaceURI) |
protected void |
doWriteProcessingInstruction(java.lang.String target) |
protected void |
doWriteProcessingInstruction(java.lang.String target,
java.lang.String data) |
protected void |
doWriteStartDocument() |
protected void |
doWriteStartDocument(java.lang.String version) |
protected void |
doWriteStartDocument(java.lang.String encoding,
java.lang.String version) |
protected void |
doWriteStartElement(java.lang.String localName) |
protected void |
doWriteStartElement(java.lang.String prefix,
java.lang.String localName,
java.lang.String namespaceURI) |
void |
flush() |
java.lang.Object |
getProperty(java.lang.String name) |
getNamespaceContext, getPrefix, setDefaultNamespace, setNamespaceContext, setPrefix, writeAttribute, writeAttribute, writeAttribute, writeCData, writeCharacters, writeCharacters, writeComment, writeDefaultNamespace, writeDTD, writeEmptyElement, writeEmptyElement, writeEmptyElement, writeEndDocument, writeEndElement, writeEntityRef, writeNamespace, writeProcessingInstruction, writeProcessingInstruction, writeStartDocument, writeStartDocument, writeStartDocument, writeStartElement, writeStartElement, writeStartElementpublic NamespaceContextCorrectingXMLStreamWriterWrapper(javax.xml.stream.XMLStreamWriter parent)
protected void doWriteAttribute(java.lang.String prefix,
java.lang.String namespaceURI,
java.lang.String localName,
java.lang.String value)
throws javax.xml.stream.XMLStreamException
doWriteAttribute in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteAttribute(java.lang.String localName,
java.lang.String value)
throws javax.xml.stream.XMLStreamException
doWriteAttribute in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteCData(java.lang.String data)
throws javax.xml.stream.XMLStreamException
doWriteCData in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteCharacters(char[] text,
int start,
int len)
throws javax.xml.stream.XMLStreamException
doWriteCharacters in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteCharacters(java.lang.String text)
throws javax.xml.stream.XMLStreamException
doWriteCharacters in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteComment(java.lang.String data)
throws javax.xml.stream.XMLStreamException
doWriteComment in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteDefaultNamespace(java.lang.String namespaceURI)
throws javax.xml.stream.XMLStreamException
doWriteDefaultNamespace in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteDTD(java.lang.String dtd)
throws javax.xml.stream.XMLStreamException
doWriteDTD in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteEmptyElement(java.lang.String prefix,
java.lang.String localName,
java.lang.String namespaceURI)
throws javax.xml.stream.XMLStreamException
doWriteEmptyElement in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteEmptyElement(java.lang.String localName)
throws javax.xml.stream.XMLStreamException
doWriteEmptyElement in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteEndDocument()
throws javax.xml.stream.XMLStreamException
doWriteEndDocument in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteEndElement()
throws javax.xml.stream.XMLStreamException
doWriteEndElement in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteEntityRef(java.lang.String name)
throws javax.xml.stream.XMLStreamException
doWriteEntityRef in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteNamespace(java.lang.String prefix,
java.lang.String namespaceURI)
throws javax.xml.stream.XMLStreamException
doWriteNamespace in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteProcessingInstruction(java.lang.String target,
java.lang.String data)
throws javax.xml.stream.XMLStreamException
doWriteProcessingInstruction in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteProcessingInstruction(java.lang.String target)
throws javax.xml.stream.XMLStreamException
doWriteProcessingInstruction in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteStartDocument()
throws javax.xml.stream.XMLStreamException
doWriteStartDocument in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteStartDocument(java.lang.String encoding,
java.lang.String version)
throws javax.xml.stream.XMLStreamException
doWriteStartDocument in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteStartDocument(java.lang.String version)
throws javax.xml.stream.XMLStreamException
doWriteStartDocument in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteStartElement(java.lang.String prefix,
java.lang.String localName,
java.lang.String namespaceURI)
throws javax.xml.stream.XMLStreamException
doWriteStartElement in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionprotected void doWriteStartElement(java.lang.String localName)
throws javax.xml.stream.XMLStreamException
doWriteStartElement in class AbstractXMLStreamWriterjavax.xml.stream.XMLStreamExceptionpublic void close()
throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamExceptionpublic void flush()
throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamExceptionpublic java.lang.Object getProperty(java.lang.String name)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException