com.sun.xml.bind.v2.runtime
public final class XMLSerializer extends Coordinator
This object coordinates the overall marshalling efforts across different content-tree objects and different target formats.
The following CFG gives the proper sequence of method invocation.
MARSHALLING := ELEMENT ELEMENT := "startElement" NSDECL* "endNamespaceDecls" ATTRIBUTE* "endAttributes" BODY "endElement" NSDECL := "declareNamespace" ATTRIBUTE := "attribute" ATTVALUES := "text"* BODY := ( "text" | ELEMENT )*
A marshalling of one element consists of two stages. The first stage is for marshalling attributes and collecting namespace declarations. The second stage is for marshalling characters/child elements of that element.
Observe that multiple invocation of "text" is allowed.
Also observe that the namespace declarations are allowed only between "startElement" and "endAttributes".
IOException, SAXException, and XMLStreamException are thrown from XmlOutput. They are always considered fatal, and therefore caught only by MarshallerImpl.
AccessorException can be thrown when an access to a property/field fails, and this is considered as a recoverable error, so it's caught everywhere.
Field Summary | |
---|---|
AttachmentMarshaller | attachmentMarshaller |
ThreadLocal<Property> | currentProperty |
JAXBContextImpl | grammar |
int[] | knownUri2prefixIndexMap |
NameList | nameList |
Constructor Summary | |
---|---|
XMLSerializer(MarshallerImpl _owner) |
Method Summary | |
---|---|
void | addInscopeBinding(String nsUri, String prefix)
This method can be called after XMLSerializer is called
but before the marshalling begins, to set the currently in-scope namespace
bindings.
|
void | attribute(String uri, String local, String value) |
void | attribute(Name name, CharSequence value) |
void | attWildcardAsAttributes(Map<QName,String> attributes, String fieldName) |
void | attWildcardAsURIs(Map<QName,String> attributes, String fieldName) |
void | childAsRoot(Object obj) |
void | childAsSoleContent(Object child, String fieldName)
The equivalent of:
childAsURIs(child, fieldName); endNamespaceDecls(); childAsAttributes(child, fieldName); endAttributes(); childAsBody(child, fieldName);This produces the given child object as the sole content of an element. |
void | childAsXsiType(Object child, String fieldName, JaxBeanInfo expected, boolean nillable)
This method is called when a type child object is found.
|
void | close() |
void | endAttributes()
Switches to the "marshal child texts/elements" mode.
|
void | endDocument() |
void | endElement()
Ends marshalling of an element.
|
void | endNamespaceDecls(Object innerPeer) |
void | errorMissingId(Object obj)
Called when a referenced object doesn't have an ID. |
Base64Data | getCachedBase64DataInstance()
Gets the cached instance of Base64Data.
|
ValidationEventLocator | getCurrentLocation(String fieldName) |
Property | getCurrentProperty()
May return null when the property hasn't been set.
|
Transformer | getIdentityTransformer() |
boolean | getInlineBinaryFlag() |
static XMLSerializer | getInstance()
When called from within the realm of the marshaller, this method
returns the current XMLSerializer in charge. |
protected ValidationEventLocator | getLocation() |
NamespaceContext2 | getNamespaceContext() |
boolean | getObjectIdentityCycleDetection() |
QName | getSchemaType() |
String | getXMIMEContentType()
Gets the MIME type with which the binary content shall be printed.
|
boolean | handleError(Exception e) |
boolean | handleError(Exception e, Object source, String fieldName) |
boolean | handleEvent(ValidationEvent event) |
void | leafElement(Name tagName, String data, String fieldName) |
void | leafElement(Name tagName, Pcdata data, String fieldName) |
void | leafElement(Name tagName, int data, String fieldName) |
String | onID(Object owner, String value) |
String | onIDREF(Object obj) |
void | reconcileID() |
void | reportError(ValidationEvent ve) |
void | reportError(String fieldName, Throwable t)
Report an error found as an exception.
|
MimeType | setExpectedMimeType(MimeType expectedMimeType)
This method is used by MimeTypedTransducer to set the expected MIME type
for the encapsulated Transducer. |
boolean | setInlineBinaryFlag(boolean value) |
void | setObjectIdentityCycleDetection(boolean val) |
void | setPrefixMapper(NamespacePrefixMapper prefixMapper) |
QName | setSchemaType(QName st) |
void | startDocument(XmlOutput out, boolean fragment, String schemaLocation, String noNsSchemaLocation)
Reset this object to write to the specified output.
|
void | startElement(Name tagName, Object outerPeer) |
void | startElement(String nsUri, String localName, String preferredPrefix, Object outerPeer) |
void | startElementForce(String nsUri, String localName, String forcedPrefix, Object outerPeer)
Variation of XMLSerializer that forces
a specific prefix. |
void | text(String text, String fieldName)
Marshalls text.
|
void | text(Pcdata text, String fieldName)
The XMLSerializer method that takes Pcdata. |
<E> void | writeDom(E element, DomHandler<E,?> domHandler, Object parentBean, String fieldName) |
void | writeXsiNilTrue()
Short for the following call sequence:
getNamespaceContext().declareNamespace(WellKnownNamespace.XML_SCHEMA_INSTANCE,"xsi",true); endNamespaceDecls(); attribute(WellKnownNamespace.XML_SCHEMA_INSTANCE,"nil","true"); endAttributes(); |
This method is useful to avoid redundant namespace declarations when the marshalling is producing a sub-document.
childAsURIs(child, fieldName); endNamespaceDecls(); childAsAttributes(child, fieldName); endAttributes(); childAsBody(child, fieldName);This produces the given child object as the sole content of an element. Used to reduce the code size in the generated marshaller.
This method produces events of the following form:
NSDECL* "endNamespaceDecls" ATTRIBUTE* "endAttributes" BODYoptionally including @xsi:type if necessary.
Parameters: child Object to be marshalled. The JaxBeanInfo for this object must return a type name. expected Expected type of the object. fieldName property name of the parent objeect from which 'o' comes. Used as a part of the error message in case anything goes wrong with 'o'.
Deprecated: Base64Data is no longer cached, so that XMLStreamWriterEx impl can retain the data, like JAX-WS does.
Gets the cached instance of Base64Data.This method shall be used from those RuntimeBuiltinLeafInfo that are bound to base64Binary.
See Also: getXMIMEContentType
Parameters: fieldName the name of the property being processed when an error is found.
Parameters: schemaLocation if non-null, this value is printed on the root element as xsi:schemaLocation noNsSchemaLocation Similar to 'schemaLocation' but this one works for xsi:noNamespaceSchemaLocation
This method can be called after the endAttributes method to marshal texts inside elements. If the method is called more than once, those texts are considered as separated by whitespaces. For example,
c.startElement("","foo"); c.endAttributes(); c.text("abc"); c.text("def"); c.startElement("","bar"); c.endAttributes(); c.endElement(); c.text("ghi"); c.endElement();will generate
<foo>abc def<bar/>ghi</foo>
.getNamespaceContext().declareNamespace(WellKnownNamespace.XML_SCHEMA_INSTANCE,"xsi",true); endNamespaceDecls(); attribute(WellKnownNamespace.XML_SCHEMA_INSTANCE,"nil","true"); endAttributes();