public abstract class AbstractUnmarshallerImpl extends Object implements Unmarshaller
这个类提供了部分默认实现Unmarshaller
接口。
JAXB Provider必须实现五种方法(getUnmarshallerHandler,unmarshal(Node),unmarshal(XMLReader,InputSource),unmarshal(XMLStreamReader)和unmarshal(XMLEventReader)。
Unmarshaller
Unmarshaller.Listener
Modifier and Type | Field and Description |
---|---|
protected boolean |
validating
解密者是否验证
|
Constructor and Description |
---|
AbstractUnmarshallerImpl() |
Modifier and Type | Method and Description |
---|---|
protected UnmarshalException |
createUnmarshalException(SAXException e)
从SAXException创建一个UnmarshalException。
|
<A extends XmlAdapter> |
getAdapter(类<A> type)
获取与指定类型相关联的适配器。
|
AttachmentUnmarshaller |
getAttachmentUnmarshaller() |
ValidationEventHandler |
getEventHandler()
返回当前事件处理程序或默认事件处理程序(如果尚未设置)。
|
Unmarshaller.Listener |
getListener()
|
Object |
getProperty(String name)
getProperty方法的默认实现总是抛出PropertyException,因为没有必需的属性。
|
Schema |
getSchema()
获取用于执行解密时间验证的JAXP 1.3 Schema 对象。
|
protected XMLReader |
getXMLReader()
获取配置的XMLReader。
|
boolean |
isValidating()
指示Unmarshaller是否配置为在解组操作期间进行验证。
|
<A extends XmlAdapter> |
setAdapter(类<A> type, A adapter)
相关联的配置实例 XmlAdapter 与此unmarshaller。
|
void |
setAdapter(XmlAdapter adapter)
相关联的配置实例 XmlAdapter 与此unmarshaller。
|
void |
setAttachmentUnmarshaller(AttachmentUnmarshaller au)
将解析cid,content-id URI的上下文关联到作为附件传递的二进制数据。
|
void |
setEventHandler(ValidationEventHandler handler)
允许应用程序注册验证事件处理程序。
|
void |
setListener(Unmarshaller.Listener listener)
注册unmarshal事件回调 Unmarshaller.Listener 与这Unmarshaller 。
|
void |
setProperty(String name, Object value)
setProperty方法的默认实现总是抛出PropertyException,因为没有必需的属性。
|
void |
setSchema(Schema schema)
指定应用于验证后续解组操作的JAXP 1.3 Schema 对象。
|
void |
setValidating(boolean validating)
指定Unmarshaller是否在解组操作期间进行验证。
|
Object |
unmarshal(File f)
从指定的文件解组XML数据并返回生成的内容树。
|
Object |
unmarshal(InputSource source)
从指定的SAX InputSource解组XML数据并返回结果内容树。
|
Object |
unmarshal(InputStream is)
从指定的InputStream中解组XML数据,并返回生成的内容树。
|
<T> JAXBElement<T> |
unmarshal(Node node, 类<T> expectedType)
通过JAXB映射
declaredType解组XML数据,并返回结果内容树。
|
Object |
unmarshal(Reader reader)
从指定的Reader中解组XML数据并返回生成的内容树。
|
Object |
unmarshal(Source source)
从指定的XML Source中解组XML数据并返回生成的内容树。
|
<T> JAXBElement<T> |
unmarshal(Source source, 类<T> expectedType)
通过
declaredType从指定的XML源解组XML数据,并返回生成的内容树。
|
Object |
unmarshal(URL url)
从指定的URL解组XML数据并返回生成的内容树。
|
Object |
unmarshal(XMLEventReader reader)
从指定的解析器解组XML数据并返回生成的内容树。
|
<T> JAXBElement<T> |
unmarshal(XMLEventReader reader, 类<T> expectedType)
将根元素解组到JAXB映射
declaredType并返回生成的内容树。
|
protected abstract Object |
unmarshal(XMLReader reader, InputSource source)
使用指定的XMLReader和InputSource解组合对象。
|
Object |
unmarshal(XMLStreamReader reader)
从指定的解析器解组XML数据并返回生成的内容树。
|
<T> JAXBElement<T> |
unmarshal(XMLStreamReader reader, 类<T> expectedType)
将根元素解组到JAXB映射
declaredType并返回生成的内容树。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getUnmarshallerHandler, unmarshal
protected XMLReader getXMLReader() throws JAXBException
public Object unmarshal(Source source) throws JAXBException
Unmarshaller
复制
实施Unmarshal Global Root Element 。
客户端应用程序可以选择不使用JAXB提供程序提供的默认解析器机制。 任何SAX 2.0兼容解析器可以替代JAXB提供程序的默认机制。 要做到这一点,客户端应用程序必须正确配置SAXSource包含由SAX 2.0解析器提供实现的XMLReader。 如果XMLReader在其上注册了一个org.xml.sax.ErrorHandler ,则将由JAXB提供者替换,以便通过JAXB的ValidationEventHandler机制报告验证错误。 如果SAXSource不包含XMLReader ,则将使用JAXB提供程序的默认解析器机制。
此解析器替换机制也可用于替换JAXB提供者的解组时间验证引擎。 客户端应用程序必须正确配置其SAX 2.0兼容解析器才能执行验证(如上例所示)。 在解组操作期间由分析器遇到的任何SAXParserExceptions将由JAXB提供商处理并转换成其将经由与Unmarshaller注册的ValidationEventHandler被报告回客户端JAXB ValidationEvent对象。 注意:指定替代验证SAX 2.0解析器进行解组合并不一定取代JAXB提供程序用于执行按需验证的验证引擎。
客户端应用程序指定在拆组期间使用的替代解析器机制的唯一方法是通过8854376142431 API。 所有其他形式的解组方法(文件,URL,节点等)将使用JAXB提供程序的默认解析器和验证器机制。
unmarshal
在界面
Unmarshaller
source
- 解密XML数据的XML源(提供者只需要支持SAXSource,DOMSource和StreamSource)
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
Unmarshaller.unmarshal(javax.xml.transform.Source, Class)
protected abstract Object unmarshal(XMLReader reader, InputSource source) throws JAXBException
public final Object unmarshal(InputSource source) throws JAXBException
Unmarshaller
unmarshal
在接口
Unmarshaller
source
- 从中解开XML数据的输入源
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
public final Object unmarshal(URL url) throws JAXBException
Unmarshaller
复制
unmarshal
在接口
Unmarshaller
url
- 从中解开XML数据的URL
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
public final Object unmarshal(File f) throws JAXBException
Unmarshaller
复制
unmarshal
在界面
Unmarshaller
f
- 从中解开XML数据的文件
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
public final Object unmarshal(InputStream is) throws JAXBException
Unmarshaller
复制
unmarshal
在界面
Unmarshaller
is
- 从中解开XML数据的InputStream
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
public final Object unmarshal(Reader reader) throws JAXBException
Unmarshaller
复制
unmarshal
在接口
Unmarshaller
reader
- 从中解开XML数据的读者
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
public boolean isValidating() throws JAXBException
注意:我将此方法命名为isValidating()以保持与JAXP保持一致,而不是将其命名为getValidating()。
isValidating
在接口
Unmarshaller
JAXBException
- 如果在检索验证标志时发生错误
public void setEventHandler(ValidationEventHandler handler) throws JAXBException
如果在调用unmarshal方法期间遇到任何验证错误,JAXB Provider将调用验证事件处理程序。 如果客户端应用程序在调用解组方法之前未注册验证事件处理程序,则所有验证事件将被默认忽略,并可能导致意外行为。
setEventHandler
在界面
Unmarshaller
handler
- 验证事件处理程序
JAXBException
- 如果在设置事件处理程序时遇到错误
public void setValidating(boolean validating) throws JAXBException
该方法只能在调用其中一个解组方法之前或之后调用。
setValidating
在接口
Unmarshaller
validating
- 如果Unmarshaller在卸载期间应验证,则为true,否则为false
JAXBException
- 如果在解密时启用或禁用验证时发生错误
public ValidationEventHandler getEventHandler() throws JAXBException
getEventHandler
在接口
Unmarshaller
JAXBException
- 如果在获取当前事件处理程序时遇到错误
protected UnmarshalException createUnmarshalException(SAXException e)
当提供者实现的ContentHandler想要抛出JAXBException时,需要通过SAXException来包装异常。 如果unmarshaller实现通过JAXBException盲包裹SAXException,这样的异常将是由另一个JAXBException包装的SAXException包装的JAXBException。 这很傻
此方法检查嵌套异常SAXException并减少这些过度的包装。
public void setProperty(String name, Object value) throws PropertyException
setProperty
在界面
Unmarshaller
name
- 要设置的属性的名称。
可以使用常量字段或用户提供的字符串指定此值。
value
- 要设置的属性的值
PropertyException
- 处理给定属性或值时出错
public Object getProperty(String name) throws PropertyException
getProperty
在界面
Unmarshaller
name
- 要检索的属性的名称
PropertyException
- 检索给定属性或值属性名称时出错
public Object unmarshal(XMLEventReader reader) throws JAXBException
Unmarshaller
复制
这个方法是Unmarshal Global Root method 。
该方法假定解析器处于START_DOCUMENT或START_ELEMENT事件。 解组将从此开始事件到相应的结束事件。 如果此方法成功返回,则reader将在结束事件之后指向该令牌。
unmarshal
在界面
Unmarshaller
reader
- 要读取的解析器。
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
Unmarshaller.unmarshal(javax.xml.stream.XMLEventReader, Class)
public Object unmarshal(XMLStreamReader reader) throws JAXBException
Unmarshaller
复制
实现Unmarshal Global Root Element 。
该方法假定解析器处于START_DOCUMENT或START_ELEMENT事件。 解组将从此开始事件到相应的结束事件。 如果此方法成功返回,则reader将在结束事件之后指向令牌。
unmarshal
在接口
Unmarshaller
reader
- 要读取的解析器。
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
Unmarshaller.unmarshal(javax.xml.stream.XMLStreamReader, Class)
public <T> JAXBElement<T> unmarshal(Node node, 类<T> expectedType) throws JAXBException
Unmarshaller
unmarshal
在接口
Unmarshaller
node
- 从中解开XML数据的文档/元素。
呼叫者至少必须支持Document和Element。
expectedType
- 适当的JAXB映射类保存
node的XML数据。
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
public <T> JAXBElement<T> unmarshal(Source source, 类<T> expectedType) throws JAXBException
Unmarshaller
复制
unmarshal
在接口
Unmarshaller
source
- 解密XML数据的XML源(提供者只需要支持SAXSource,DOMSource和StreamSource)
expectedType
- 适当的JAXB映射类保存
source的xml根元素
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
public <T> JAXBElement<T> unmarshal(XMLStreamReader reader, 类<T> expectedType) throws JAXBException
Unmarshaller
该方法实现unmarshal by declaredType 。
该方法假定解析器处于START_DOCUMENT或START_ELEMENT事件。 解组将从此开始事件到相应的结束事件。 如果此方法成功返回,则reader将在结束事件之后指向令牌。
unmarshal
在界面
Unmarshaller
reader
- 要读取的解析器。
expectedType
- 适当的JAXB映射类保存
reader的START_ELEMENT XML数据。
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
public <T> JAXBElement<T> unmarshal(XMLEventReader reader, 类<T> expectedType) throws JAXBException
Unmarshaller
复制
该方法实现unmarshal by declaredType 。
该方法假定解析器处于START_DOCUMENT或START_ELEMENT事件。 解组将从此开始事件到相应的结束事件。 如果此方法成功返回,则reader将在结束事件之后指向该令牌。
unmarshal
在接口
Unmarshaller
reader
- 要读取的解析器。
expectedType
- 适当的JAXB映射类保存
reader的START_ELEMENT XML数据。
JAXBException
- 解组时是否发生意外错误
UnmarshalException
- 如果ValidationEventHandler
从其handleEvent方法返回false,或者Unmarshaller无法执行XML到Java绑定。
见Unmarshalling XML Data
public void setSchema(Schema schema)
Unmarshaller
复制
Schema
对象。
将null传递给此方法将禁用验证。
此方法将替代已弃用的setValidating(boolean)
API。
最初此属性设置为null 。
setSchema
在界面
Unmarshaller
schema
- 用于验证解组操作的模式对象或者禁用验证的null
public Schema getSchema()
Unmarshaller
复制
Schema
对象。
如果在unmarshaller上没有设置Schema,则该方法将返回null,表示将不执行解密时间验证。
此方法提供已弃用的Unmarshaller.isValidating()
API以及对Schema对象的访问的替换功能 。 要确定Unmarshaller是否启用了验证,只需将null的返回类型测试:
boolean isValidating = u.getSchema()!=null;
getSchema
在界面
Unmarshaller
public void setAdapter(XmlAdapter adapter)
Unmarshaller
XmlAdapter
与此unmarshaller。
这是调用setAdapter(adapter.getClass(),adapter);
的方便方法。
setAdapter
在界面
Unmarshaller
Unmarshaller.setAdapter(Class,XmlAdapter)
public <A extends XmlAdapter> void setAdapter(类<A> type, A adapter)
Unmarshaller
复制
XmlAdapter
与此unmarshaller。
每个unmarshaller内部维护一个Map
< 类
, XmlAdapter
>,它使用用于解组类,它们的字段/方法的注解为XmlJavaTypeAdapter
。
此方法允许应用程序使用的一个配置实例XmlAdapter
。 当未给出适配器的实例时,解组器将通过调用其默认构造函数来创建一个。
setAdapter
在接口
Unmarshaller
type
- 适配器的类型。
当XmlJavaTypeAdapter.value()
引用此类型时,将使用指定的实例。
adapter
- 要使用的适配器的实例。
如果为空,它将取消注册此类型的当前适配器集。
public <A extends XmlAdapter> A getAdapter(类<A> type)
Unmarshaller
复制
Unmarshaller.setAdapter(javax.xml.bind.annotation.adapters.XmlAdapter)
方法的反向操作。
getAdapter
在接口
Unmarshaller
public void setAttachmentUnmarshaller(AttachmentUnmarshaller au)
Unmarshaller
复制
将解析cid,content-id URI的上下文关联到作为附件传递的二进制数据。
即使在解组器执行XOP处理时,也必须支持通过Unmarshaller.setSchema(Schema)
启用解密时间验证。
setAttachmentUnmarshaller
在界面
Unmarshaller
public AttachmentUnmarshaller getAttachmentUnmarshaller()
getAttachmentUnmarshaller
在界面
Unmarshaller
public void setListener(Unmarshaller.Listener listener)
Unmarshaller
注册unmarshal事件回调Unmarshaller.Listener
与这Unmarshaller
。
每个Unmarshaller只有一个监听器。 设置侦听器将替换以前设置的侦听器。 可以通过将侦听器设置为null来取消注册当前侦听器。
setListener
在界面
Unmarshaller
listener
- 提供这个Unmarshaller
的解组事件回调
public Unmarshaller.Listener getListener()
Unmarshaller
复制
getListener
在接口
Unmarshaller
Unmarshaller.Listener
或null
如果没有监听器已经注册到这个解组员。