Class JsonXMLStreamWriter
- java.lang.Object
-
- org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
-
- org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter
-
- All Implemented Interfaces:
XMLStreamWriter
public class JsonXMLStreamWriter extends AbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
JSON XML stream writer.Limitations
- Mixed content (e.g.
<alice>bob<edgar/></alice>
) is not supported. writeDTD(...)
andwriteEntityRef(...)
are not supported.writeCData(...)
delegates to writeCharacters(...).writeComment(...)
does nothing.writeProcessingInstruction(...)
does nothing (except for targetxml-multiple
, see below).
The writer may consume processing instructions (e.g.
<?xml-multiple element-name?>
) to properly insert JSON array tokens ('['
and']'
). The client provides this instruction through theAbstractXMLStreamWriter.writeProcessingInstruction(String, String)
method, passing the (possibly prefixed) field name as data e.g.... writer.writeProcessingInstruction("xml-multiple", "item"); for (Item item : items) { writer.writeStartElement("item"); ... writer.writeEndElement(); } ...
The element name passed as processing instruction data is optional. If omitted, the next element within the current scope will start an array. Note, that this method does not allow to create empty arrays (in fact, the above code sample could create unexpected results, if the name would have been omitted and collection were empty).
-
-
Constructor Summary
Constructors Constructor Description JsonXMLStreamWriter(JsonStreamTarget target, boolean repairNamespaces, boolean multiplePI, char namespaceSeparator, boolean namespaceDeclarations)
Create writer instance.JsonXMLStreamWriter(JsonStreamTarget target, boolean repairNamespaces, boolean multiplePI, char namespaceSeparator, boolean namespaceDeclarations, boolean xmlNilReadWriteEnabled, boolean xmlWriteNullForEmptyElement)
Create writer instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
flush()
protected void
writeAttr(String prefix, String localName, String namespaceURI, String value)
Write attribute.void
writeAttribute(String prefix, String namespaceURI, String localName, String value)
void
writeBoolean(Boolean value)
Write boolean value.protected void
writeData(Object data, int type)
Write characters/comment/dtd/entity data.void
writeEndArray()
void
writeEndDocument()
protected void
writeEndElementTag()
Write end element tag.void
writeNamespace(String prefix, String namespaceURI)
protected void
writeNsDecl(String prefix, String namespaceURI)
Write namespace declaration.void
writeNumber(Number value)
Write number value.protected void
writePI(String target, String data)
Read processing instruction.void
writeStartArray(String fieldName)
void
writeStartDocument(String encoding, String version)
protected org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo
writeStartElementTag(String prefix, String localName, String namespaceURI)
Write open start element tag.protected void
writeStartElementTagEnd()
Write close start element tag.-
Methods inherited from class org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamWriter
getNamespaceContext, getPrefix, getProperty, getScope, isStartDocumentWritten, setDefaultNamespace, setNamespaceContext, setPrefix, writeAttribute, writeAttribute, writeCData, writeCharacters, writeCharacters, writeCharacters, writeComment, writeDefaultNamespace, writeDTD, writeEmptyElement, writeEmptyElement, writeEmptyElement, writeEndElement, writeEntityRef, writeProcessingInstruction, writeProcessingInstruction, writeStartDocument, writeStartDocument, writeStartElement, writeStartElement, writeStartElement
-
-
-
-
Constructor Detail
-
JsonXMLStreamWriter
public JsonXMLStreamWriter(JsonStreamTarget target, boolean repairNamespaces, boolean multiplePI, char namespaceSeparator, boolean namespaceDeclarations)
Create writer instance.- Parameters:
target
- stream targetmultiplePI
- whether to consume<xml-multiple?>
PIs to trigger array startnamespaceSeparator
- namespace prefix separatornamespaceDeclarations
- whether to write namespace declarationsrepairNamespaces
- repair Namespaces
-
JsonXMLStreamWriter
public JsonXMLStreamWriter(JsonStreamTarget target, boolean repairNamespaces, boolean multiplePI, char namespaceSeparator, boolean namespaceDeclarations, boolean xmlNilReadWriteEnabled, boolean xmlWriteNullForEmptyElement)
Create writer instance.- Parameters:
target
- stream targetmultiplePI
- whether to consume<xml-multiple?>
PIs to trigger array startnamespaceSeparator
- namespace prefix separatornamespaceDeclarations
- whether to write namespace declarationsxmlNilReadWriteEnabled
- Supports reading and writing of XML Nil elements as defined by http://www.w3.org/TR/xmlschema-1/#xsi_nil when the XML/JSON inputs contains nil/null values.repairNamespaces
- repair NamespacesxmlWriteNullForEmptyElement
- write null or "" for XML empty elements without nil attribute
-
-
Method Detail
-
writeStartElementTag
protected org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo writeStartElementTag(String prefix, String localName, String namespaceURI) throws XMLStreamException
Description copied from class:AbstractXMLStreamWriter
Write open start element tag. The returned scope info is stored in the new scope and will be available viagetScope().getInfo()
.- Specified by:
writeStartElementTag
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Parameters:
prefix
- element prefix (may beXMLConstants.DEFAULT_NS_PREFIX
)localName
- local namenamespaceURI
- namespace URI- Returns:
- new scope info
- Throws:
XMLStreamException
-
writeStartElementTagEnd
protected void writeStartElementTagEnd() throws XMLStreamException
Description copied from class:AbstractXMLStreamWriter
Write close start element tag.- Specified by:
writeStartElementTagEnd
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Throws:
XMLStreamException
-
writeEndElementTag
protected void writeEndElementTag() throws XMLStreamException
Description copied from class:AbstractXMLStreamWriter
Write end element tag.- Specified by:
writeEndElementTag
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Throws:
XMLStreamException
-
writeAttribute
public void writeAttribute(String prefix, String namespaceURI, String localName, String value) throws XMLStreamException
- Specified by:
writeAttribute
in interfaceXMLStreamWriter
- Overrides:
writeAttribute
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Throws:
XMLStreamException
-
writeNamespace
public void writeNamespace(String prefix, String namespaceURI) throws XMLStreamException
- Specified by:
writeNamespace
in interfaceXMLStreamWriter
- Overrides:
writeNamespace
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Throws:
XMLStreamException
-
writeAttr
protected void writeAttr(String prefix, String localName, String namespaceURI, String value) throws XMLStreamException
Description copied from class:AbstractXMLStreamWriter
Write attribute.- Specified by:
writeAttr
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Parameters:
prefix
- attribute prefix (may beXMLConstants.DEFAULT_NS_PREFIX
)localName
- local namenamespaceURI
- namespace URIvalue
- attribute value- Throws:
XMLStreamException
-
writeNsDecl
protected void writeNsDecl(String prefix, String namespaceURI) throws XMLStreamException
Description copied from class:AbstractXMLStreamWriter
Write namespace declaration.- Specified by:
writeNsDecl
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Parameters:
prefix
- namespace prefixnamespaceURI
- namespace URI- Throws:
XMLStreamException
-
writeData
protected void writeData(Object data, int type) throws XMLStreamException
Description copied from class:AbstractXMLStreamWriter
Write characters/comment/dtd/entity data.- Specified by:
writeData
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Parameters:
data
- text/datatype
- one ofCHARACTERS, COMMENT, CDATA, DTD, ENTITY_REFERENCE, SPACE
- Throws:
XMLStreamException
-
writeStartDocument
public void writeStartDocument(String encoding, String version) throws XMLStreamException
- Specified by:
writeStartDocument
in interfaceXMLStreamWriter
- Overrides:
writeStartDocument
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Throws:
XMLStreamException
-
writeEndDocument
public void writeEndDocument() throws XMLStreamException
- Specified by:
writeEndDocument
in interfaceXMLStreamWriter
- Overrides:
writeEndDocument
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Throws:
XMLStreamException
-
writeStartArray
public void writeStartArray(String fieldName) throws XMLStreamException
- Throws:
XMLStreamException
-
writeEndArray
public void writeEndArray() throws XMLStreamException
- Throws:
XMLStreamException
-
close
public void close() throws XMLStreamException
- Specified by:
close
in interfaceXMLStreamWriter
- Overrides:
close
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Throws:
XMLStreamException
-
flush
public void flush() throws XMLStreamException
- Throws:
XMLStreamException
-
writePI
protected void writePI(String target, String data) throws XMLStreamException
Description copied from class:AbstractXMLStreamWriter
Read processing instruction.- Specified by:
writePI
in classAbstractXMLStreamWriter<org.apache.synapse.commons.staxon.core.json.JsonXMLStreamWriter.ScopeInfo>
- Parameters:
target
- PI targetdata
- PI data (may benull
)- Throws:
XMLStreamException
-
writeNumber
public void writeNumber(Number value) throws XMLStreamException
Write number value.- Parameters:
value
-- Throws:
XMLStreamException
-
writeBoolean
public void writeBoolean(Boolean value) throws XMLStreamException
Write boolean value.- Parameters:
value
-- Throws:
XMLStreamException
-
-