- java.lang.Object
-
- javax.xml.bind.helpers.AbstractMarshallerImpl
-
- All Implemented Interfaces:
-
Marshaller
public abstract class AbstractMarshallerImpl extends Object implements Marshaller
部分默认Marshaller
实现。该类为
Marshaller
接口提供了部分默认实现。一个JAXB提供者必须实现的唯一方法是
marshal(Object, javax.xml.transform.Result)
,marshal(Object, javax.xml.stream.XMLStreamWriter)
,并marshal(Object, javax.xml.stream.XMLEventWriter)
。- 从以下版本开始:
- 1.6,JAXB 1.0
- 另请参见:
-
Marshaller
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface javax.xml.bind.Marshaller
Marshaller.Listener
-
-
Field Summary
-
Fields inherited from interface javax.xml.bind.Marshaller
JAXB_ENCODING, JAXB_FORMATTED_OUTPUT, JAXB_FRAGMENT, JAXB_NO_NAMESPACE_SCHEMA_LOCATION, JAXB_SCHEMA_LOCATION
-
-
构造方法摘要
构造方法 Constructor 描述 AbstractMarshallerImpl()
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 <A extends XmlAdapter>
AgetAdapter(Class<A> type)
获取与指定类型相关联的适配器。AttachmentMarshaller
getAttachmentMarshaller()
protected String
getEncoding()
获取当前输出编码的便利方法。ValidationEventHandler
getEventHandler()
返回当前事件处理程序或默认事件处理程序(如果尚未设置)。protected String
getJavaEncoding(String encoding)
从IANA名称获取相应的Java编码名称。Marshaller.Listener
getListener()
Node
getNode(Object obj)
默认情况下,getNode方法不受支持,并抛出一个UnsupportedOperationException
。protected String
getNoNSSchemaLocation()
获取当前noNamespaceSchemaLocation的便利方法。Object
getProperty(String name)
getProperty方法的默认实现处理Marshaller中四个定义的属性。Schema
getSchema()
获取用于执行组织时间验证的JAXP 1.3Schema
对象。protected String
getSchemaLocation()
获取当前schemaLocation的便利方法。protected boolean
isFormattedOutput()
获取格式化输出标志的方便方法。protected boolean
isFragment()
获取片段标志的便利方法。void
marshal(Object jaxbElement, File output)
将根据jaxbElement
的内容树jaxbElement
成一个文件。void
marshal(Object obj, OutputStream os)
将根据jaxbElement
的内容树jaxbElement
成输出流。void
marshal(Object obj, Writer w)
将根据jaxbElement
的内容树jaxbElement
到Writer中。void
marshal(Object obj, XMLEventWriter writer)
将根据jaxbElement
的内容树jaxbElement
成一个XMLEventWriter
。void
marshal(Object obj, XMLStreamWriter writer)
将根据jaxbElement
的内容树jaxbElement
成一个XMLStreamWriter
。void
marshal(Object obj, Node node)
将根据jaxbElement
的内容树jaxbElement
到DOM树中。void
marshal(Object obj, ContentHandler handler)
将根据jaxbElement
的内容树jaxbElement
成SAX2事件。<A extends XmlAdapter>
voidsetAdapter(Class<A> type, A adapter)
将配置的XmlAdapter
实例与此编组相关联。void
setAdapter(XmlAdapter adapter)
将配置的XmlAdapter
实例与此编组相关联。void
setAttachmentMarshaller(AttachmentMarshaller am)
关联使XML文档中的二进制数据能够以XML二进制优化的附件传输的上下文。protected void
setEncoding(String encoding)
设置输出编码的方便方法。void
setEventHandler(ValidationEventHandler handler)
允许应用程序注册验证事件处理程序。protected void
setFormattedOutput(boolean v)
设置格式化输出标志的便利方法。protected void
setFragment(boolean v)
设置片段标志的便利方法。void
setListener(Marshaller.Listener listener)
注册元帅事件回调Marshaller.Listener
与这Marshaller
。protected void
setNoNSSchemaLocation(String location)
设置noNamespaceSchemaLocation的便利方法。void
setProperty(String name, Object value)
setProperty方法的默认实现处理Marshaller中四个定义的属性。void
setSchema(Schema schema)
指定应用于验证随后的元组操作的JAXP 1.3Schema
对象。protected void
setSchemaLocation(String location)
设置schemaLocation的便利方法。-
Methods inherited from interface javax.xml.bind.Marshaller
marshal
-
-
-
-
方法详细信息
-
marshal
public final void marshal(Object obj, OutputStream os) throws JAXBException
描述从接口Marshaller
复制将根据jaxbElement
的内容树jaxbElement
成输出流。- Specified by:
-
marshal
在接口Marshaller
- 参数
-
obj
- 要编组的内容树的根。 -
os
- XML将被添加到此流。 - 异常
-
JAXBException
- 如果在编组过程中发生意外问题。 -
MarshalException
- 如果ValidationEventHandler
从其handleEvent
方法返回false,或者Marshaller
无法编组jaxbElement
(或任何可从jaxbElement
可访问的对象)。 见Marshalling a JAXB element 。
-
marshal
public void marshal(Object jaxbElement, File output) throws JAXBException
描述从接口Marshaller
复制将根据jaxbElement
的内容树jaxbElement
成一个文件。- Specified by:
-
marshal
在接口Marshaller
- 参数
-
jaxbElement
- 要编组的内容树的根。 -
output
- 要写入的文件。 如果这个文件已经存在,它将被覆盖。 - 异常
-
JAXBException
- 如果在编组过程中发生意外问题。 -
MarshalException
- 如果ValidationEventHandler
从其handleEvent
方法返回false,或者Marshaller
无法编组jaxbElement
(或任何可从jaxbElement
对象)。 见Marshalling a JAXB element 。
-
marshal
public final void marshal(Object obj, Writer w) throws JAXBException
描述从接口Marshaller
复制将根据jaxbElement
的内容树jaxbElement
成一个作家。- Specified by:
-
marshal
在接口Marshaller
- 参数
-
obj
- 要编组的内容树的根。 -
w
- XML将被发送到这个作者。 - 异常
-
JAXBException
- 如果在编组过程中发生意外问题。 -
MarshalException
- 如果ValidationEventHandler
从其handleEvent
方法返回false,或者Marshaller
无法编组jaxbElement
(或任何可从jaxbElement
可访问的对象)。 见Marshalling a JAXB element 。
-
marshal
public final void marshal(Object obj, ContentHandler handler) throws JAXBException
说明从接口Marshaller
复制将根据jaxbElement
的内容树jaxbElement
成SAX2事件。- Specified by:
-
marshal
在接口Marshaller
- 参数
-
obj
- 要编组的内容树的根。 -
handler
- XML将作为SAX2事件发送到此处理程序。 - 异常
-
JAXBException
- 如果在编组过程中发生意外问题。 -
MarshalException
- 如果ValidationEventHandler
从其handleEvent
方法返回false,或者Marshaller
无法编组jaxbElement
(或任何可从jaxbElement
可访问的对象)。 见Marshalling a JAXB element 。
-
marshal
public final void marshal(Object obj, Node node) throws JAXBException
描述从接口Marshaller
复制将根据jaxbElement
的内容树jaxbElement
到DOM树中。- Specified by:
-
marshal
在接口Marshaller
- 参数
-
obj
- 要编组的内容树。 -
node
- 将作为该节点的子节点添加DOM节点。 此参数必须是一个可接受子(节点Document
,DocumentFragment
,或Element
) - 异常
-
JAXBException
- 如果在编组过程中发生意外问题。 -
MarshalException
- 如果ValidationEventHandler
从其handleEvent
方法返回false,或者Marshaller
无法编组jaxbElement
(或任何可从jaxbElement
可访问的对象)。 见Marshalling a JAXB element 。
-
getNode
public Node getNode(Object obj) throws JAXBException
默认情况下,getNode方法不受支持,并抛出一个UnsupportedOperationException
。 选择支持此方法的实现必须覆盖此方法。- Specified by:
-
getNode
在接口Marshaller
- 参数
-
obj
- - JAXB XML内容的Java表示 - 结果
- contentTree的DOM树视图
- 异常
-
JAXBException
- 如果发生意外问题
-
getEncoding
protected String getEncoding()
获取当前输出编码的便利方法。- 结果
- 当前编码或“UTF-8”如果尚未设置。
-
setEncoding
protected void setEncoding(String encoding)
设置输出编码的方便方法。- 参数
-
encoding
- Marshaller类文档中指定的有效编码
-
getSchemaLocation
protected String getSchemaLocation()
获取当前schemaLocation的便利方法。- 结果
- 当前的schemaLocation或null(如果尚未设置)
-
setSchemaLocation
protected void setSchemaLocation(String location)
设置schemaLocation的便利方法。- 参数
-
location
- schemaLocation值
-
getNoNSSchemaLocation
protected String getNoNSSchemaLocation()
获取当前noNamespaceSchemaLocation的便利方法。- 结果
- 当前的noNamespaceSchemaLocation或null(如果尚未设置)
-
setNoNSSchemaLocation
protected void setNoNSSchemaLocation(String location)
设置noNamespaceSchemaLocation的便利方法。- 参数
-
location
- noNamespaceSchemaLocation值
-
isFormattedOutput
protected boolean isFormattedOutput()
获取格式化输出标志的方便方法。- 结果
- 格式化输出标志的当前值,如果尚未设置则为false。
-
setFormattedOutput
protected void setFormattedOutput(boolean v)
设置格式化输出标志的便利方法。- 参数
-
v
- 格式化输出标志的值。
-
isFragment
protected boolean isFragment()
获取片段标志的便利方法。- 结果
- 片段标记的当前值,如果未设置则为false。
-
setFragment
protected void setFragment(boolean v)
设置片段标志的便利方法。- 参数
-
v
- 片段标志的值。
-
getJavaEncoding
protected String getJavaEncoding(String encoding) throws UnsupportedEncodingException
从IANA名称获取相应的Java编码名称。 此方法是派生类转换编码名称的帮助方法。- 异常
-
UnsupportedEncodingException
- 如果此实现无法找到Java编码名称。
-
setProperty
public void setProperty(String name, Object value) throws PropertyException
setProperty方法的默认实现处理Marshaller中四个定义的属性。 如果提供程序需要处理其他属性,则它应该在派生类中重写此方法。- Specified by:
-
setProperty
在接口Marshaller
- 参数
-
name
- 要设置的属性的名称。 可以使用常数字段或用户提供的字符串指定此值。 -
value
- 要设置的属性的值 - 异常
-
PropertyException
- 处理给定属性或值时出错
-
getProperty
public Object getProperty(String name) throws PropertyException
getProperty方法的默认实现处理Marshaller中四个定义的属性。 如果提供程序需要支持额外的提供程序特定的属性,它应该在派生类中重写此方法。- Specified by:
-
getProperty
在接口Marshaller
- 参数
-
name
- 要检索的属性的名称 - 结果
- 请求的属性的值
- 异常
-
PropertyException
- 检索给定属性或值属性名称时出现错误
-
getEventHandler
public ValidationEventHandler getEventHandler() throws JAXBException
描述从接口Marshaller
复制返回当前事件处理程序或默认事件处理程序(如果尚未设置)。- Specified by:
-
getEventHandler
在接口Marshaller
- 结果
- 当前的ValidationEventHandler或默认事件处理程序(如果尚未设置)
- 异常
-
JAXBException
- 如果在获取当前事件处理程序时遇到错误 - 另请参见:
-
Marshaller.getEventHandler()
-
setEventHandler
public void setEventHandler(ValidationEventHandler handler) throws JAXBException
描述从接口Marshaller
复制允许应用程序注册验证事件处理程序。如果在任何元帅API的调用期间遇到任何验证错误,JAXB提供者将调用验证事件处理程序。 如果客户端应用程序在调用其中一个元数据方法之前没有注册验证事件处理程序,则验证事件将由默认事件处理程序处理,该事件处理程序将在遇到第一个错误或致命错误后终止元组操作。
使用null参数调用此方法将导致Marshaller恢复为默认的默认事件处理程序。
- Specified by:
-
setEventHandler
在接口Marshaller
- 参数
-
handler
- 验证事件处理程序 - 异常
-
JAXBException
- 如果在设置事件处理程序时遇到错误 - 另请参见:
-
Marshaller.setEventHandler(ValidationEventHandler)
-
marshal
public void marshal(Object obj, XMLEventWriter writer) throws JAXBException
说明从接口Marshaller
复制将根据jaxbElement
的内容树jaxbElement
成一个XMLEventWriter
。- Specified by:
-
marshal
在接口Marshaller
- 参数
-
obj
- 根据要编组的obj
的内容树。 -
writer
- XML将发送给作者。 - 异常
-
JAXBException
- 如果在编组过程中出现意外问题。 -
MarshalException
- 如果ValidationEventHandler
从其handleEvent
方法返回false,或者Marshaller
无法编组jaxbElement
(或任何可从jaxbElement
可访问的对象)。 见Marshalling a JAXB element 。
-
marshal
public void marshal(Object obj, XMLStreamWriter writer) throws JAXBException
描述从接口Marshaller
复制将根据jaxbElement
的内容树jaxbElement
成一个XMLStreamWriter
。- Specified by:
-
marshal
在接口Marshaller
- 参数
-
obj
- 要编组的内容树。 -
writer
- XML将被发送到这个作者。 - 异常
-
JAXBException
- 如果在编组过程中发生意外问题。 -
MarshalException
- 如果ValidationEventHandler
从其handleEvent
方法返回false,或者Marshaller
无法编组jaxbElement
(或任何可从jaxbElement
对象)。 见Marshalling a JAXB element 。
-
setSchema
public void setSchema(Schema schema)
描述从接口Marshaller
复制- Specified by:
-
setSchema
接口Marshaller
- 参数
-
schema
- 用于验证组织操作的模式对象或null以禁用验证
-
getSchema
public Schema getSchema()
描述从接口Marshaller
复制获取用于执行组织时间验证的JAXP 1.3Schema
对象。 如果在编组器中没有设置Schema,则该方法将返回null,表示将不执行组织时间验证。- Specified by:
-
getSchema
在接口Marshaller
- 结果
- 用于执行组织时间验证的Schema对象,如果不存在则使用null。
-
setAdapter
public void setAdapter(XmlAdapter adapter)
说明从接口Marshaller
复制将配置的XmlAdapter
实例与此编组相关联。这是调用
setAdapter(adapter.getClass(),adapter);
的方便方法。- Specified by:
-
setAdapter
在接口Marshaller
- 另请参见:
-
Marshaller.setAdapter(Class,XmlAdapter)
-
setAdapter
public <A extends XmlAdapter> void setAdapter(Class<A> type, A adapter)
描述从接口Marshaller
复制将配置的XmlAdapter
实例与此编组相关联。每编组内部维护一个
Map
<Class
,XmlAdapter
>,它使用用于编组类,它们的字段/方法的注解为XmlJavaTypeAdapter
。该方法允许应用程序使用配置的
XmlAdapter
实例。 当没有给出适配器的实例时,编组者将通过调用其默认构造函数来创建一个。- Specified by:
-
setAdapter
在接口Marshaller
- 参数
-
type
- 适配器的类型。 指定的实例将在XmlJavaTypeAdapter.value()
引用此类型时使用。 -
adapter
- 要使用的适配器的实例。 如果为空,它将取消注册此类型的当前适配器集。
-
getAdapter
public <A extends XmlAdapter> A getAdapter(Class<A> type)
描述从接口Marshaller
复制获取与指定类型相关联的适配器。 这是Marshaller.setAdapter(javax.xml.bind.annotation.adapters.XmlAdapter)
方法的反向操作。- Specified by:
-
getAdapter
接口Marshaller
-
setAttachmentMarshaller
public void setAttachmentMarshaller(AttachmentMarshaller am)
说明从接口Marshaller
复制关联使XML文档中的二进制数据能够以XML二进制优化的附件传输的上下文。 附件由XML文档内容模型通过存储在xml文档中的content-id URI(cid)引用引用。
- Specified by:
-
setAttachmentMarshaller
在接口Marshaller
-
getAttachmentMarshaller
public AttachmentMarshaller getAttachmentMarshaller()
- Specified by:
-
getAttachmentMarshaller
在接口Marshaller
-
setListener
public void setListener(Marshaller.Listener listener)
描述从接口Marshaller
复制注册编组事件回调
Marshaller.Listener
这个Marshaller
。每个Marshaller只有一个监听器。 设置侦听器将替换以前设置的侦听器。 可以通过将侦听器设置为
null
来取消注册当前侦听器。- Specified by:
-
setListener
在接口Marshaller
- 参数
-
listener
- 实现Marshaller.Listener
的类的实例
-
getListener
public Marshaller.Listener getListener()
说明从接口Marshaller
复制- Specified by:
-
getListener
接口Marshaller
- 结果
-
注册
Marshaller.Listener
或null
如果没有监听器已注册该Marshaller。
-
-