java.lang.Object javax.xml.bind.helpers.AbstractUnmarshallerImpl
public abstract class AbstractUnmarshallerImpl
部分默认 Unmarshaller 实现。
此类提供 Unmarshaller
接口的部分默认实现。
JAXB 提供者必须实现 5 个方法:getUnmarshallerHandler、unmarshal(Node)、unmarshal(XMLReader,InputSource)、unmarshal(XMLStreamReader) 和 unmarshal(XMLEventReader)。
Unmarshaller
嵌套类摘要 |
---|
从接口 javax.xml.bind.Unmarshaller 继承的嵌套类/接口 |
---|
Unmarshaller.Listener |
字段摘要 | |
---|---|
protected boolean |
validating 指示 Unmarshaller 是否将执行验证。 |
构造方法摘要 | |
---|---|
AbstractUnmarshallerImpl() |
方法摘要 | ||
---|---|---|
protected UnmarshalException |
createUnmarshalException(SAXException e) 从 SAXException 创建 UnmarshalException。 |
|
|
getAdapter(Class<A> type) 获取与指定类型关联的适配器。 |
|
AttachmentUnmarshaller |
getAttachmentUnmarshaller() |
|
ValidationEventHandler |
getEventHandler() 返回当前的事件处理程序,如果没有设置该处理程序,则返回默认的事件处理程序。 |
|
Unmarshaller.Listener |
getListener() 返回向此 Unmarshaller 注册的 Unmarshaller.Listener 。 |
|
Object |
getProperty(String name) 由于没有必需的属性,getProperty 方法的默认实现总是抛出 PropertyException。 |
|
Schema |
getSchema() 获取用于执行解组时验证的 JAXP 1.3 Schema 对象。 |
|
protected XMLReader |
getXMLReader() 获取配置好的 XMLReader。 |
|
boolean |
isValidating() 指示 Unmarshaller 是否被配置为在执行解组操作期间进行验证。 |
|
|
setAdapter(Class<A> type, A adapter) 将已配置的 XmlAdapter 实例与此 unmarshaller 关联。 |
|
void |
setAdapter(XmlAdapter adapter) 将已配置的 XmlAdapter 实例与此 unmarshaller 关联。 |
|
void |
setAttachmentUnmarshaller(AttachmentUnmarshaller au) 将解析 cid(内容 id URI)的上下文与作为附件传递的二进制数据关联。 |
|
void |
setEventHandler(ValidationEventHandler handler) 允许应用程序注册一个验证事件处理程序。 |
|
void |
setListener(Unmarshaller.Listener listener) 向此 Unmarshaller 注册解组事件回调 Unmarshaller.Listener 。 |
|
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 数据并返回得到的内容树。 |
|
|
unmarshal(Node node, Class<T> expectedType) 通过 JAXB 映射的 declaredType 解组 XML 数据并返回得到的内容树。 |
|
Object |
unmarshal(Reader reader) 从指定的 Reader 解组 XML 数据并返回得到的内容树。 |
|
Object |
unmarshal(Source source) 从指定的 XML Source 解组 XML 数据并返回得到的内容树。 |
|
|
unmarshal(Source source, Class<T> expectedType) 从 declaredType 指定的 XML Source 解组 XML 数据并返回得到的内容树。 |
|
Object |
unmarshal(URL url) 从指定的 URL 解组 XML 数据并返回得到的内容树。 |
|
Object |
unmarshal(XMLEventReader reader) 从指定的 pull 解析器解组 XML 数据并返回得到的内容树。 |
|
|
unmarshal(XMLEventReader reader, Class<T> expectedType) 将根元素解组到 JAXB 映射的 declaredType 并返回得到的内容树。 |
|
protected abstract Object |
unmarshal(XMLReader reader, InputSource source) 使用指定的 XMLReader 和 InputSource 解组对象。 |
|
Object |
unmarshal(XMLStreamReader reader) 从指定的 pull 解析器解组 XML 数据并返回得到的内容树。 |
|
|
unmarshal(XMLStreamReader reader, Class<T> expectedType) 将根元素解组到 JAXB 映射的 declaredType 并返回得到的内容树。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从接口 javax.xml.bind.Unmarshaller 继承的方法 |
---|
getUnmarshallerHandler, unmarshal |
字段详细信息 |
---|
protected boolean validating
构造方法详细信息 |
---|
public AbstractUnmarshallerImpl()
方法详细信息 |
---|
protected XMLReader getXMLReader() throws JAXBException
SAXSource
对象没有 XMLReader 时使用。
Unmarshaller
不可重入,因此我们只能使用一个 XMLReader 实例。
JAXBException
public Object unmarshal(Source source) throws JAXBException
Unmarshaller
复制的描述
实现解组全局根元素。
客户端应用程序可以选择不使用随 JAXB 提供者一起提供的默认解析器机制。任何兼容 SAX 2.0 的解析器都可以取代 JAXB 提供者的默认机制。要实现这一点,客户端应用程序必须正确配置一个包含 XMLReader 的 SAXSource,并且该 XMLReader 是由 SAX 2.0 解析器提供者实现的。如果 XMLReader 有一个向它注册的 org.xml.sax.ErrorHandler,则将使用 JAXB 提供者替换它,以便通过 JAXB 的 ValidationEventHandler 机制报告验证错误。如果 SAXSource 不包含 XMLReader,则将使用 JAXB 提供者的默认解析器机制。
也可以使用此解析器替换机制来替换 JAXB 提供者的解组时验证引擎。客户端应用程序必须正确配置其兼容 SAX 2.0 的解析器来执行验证(如上例所示)。解析器在解组操作期间遇到的任何 SAXParserExceptions 都将由 JAXB 提供者处理,并将其转换为 JAXB ValidationEvent 对象,这些对象将通过已经向 Unmarshaller 注册的 ValidationEventHandler 报告给客户端。注: 在为了实现解组而指定一个替换验证 SAX 2.0 解析器时,无需替换 JAXB 提供者使用的验证引擎来执行按需应变的验证。
客户端应用程序指定将在解组期间使用的替换解析器机制的唯一方法是通过 unmarshal(SAXSource) API。所有其他形式的 unmarshal 方法(文件、URL、Node 等等)将使用 JAXB 提供者的默认解析器和验证器机制。
Unmarshaller
中的
unmarshal
source
- 将从中解组 XML 数据的 XML Source(提供者只需支持 SAXSource、DOMSource 和 StreamSource)
JAXBException
- 如果在解组时发生不可预料的错误
UnmarshalException
- 如果
ValidationEventHandler
从其
handleEvent 方法返回 false 或者
Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅
解组 XML 数据
Unmarshaller.unmarshal(javax.xml.transform.Source, Class)
protected abstract Object unmarshal(XMLReader reader, InputSource source) throws JAXBException
JAXBException
public final Object unmarshal(InputSource source) throws JAXBException
Unmarshaller
复制的描述
实现解组全局根元素。
Unmarshaller
中的
unmarshal
source
- 将从中解组 XML 数据的输入源
JAXBException
- 如果在解组时发生不可预料的错误
UnmarshalException
- 如果
ValidationEventHandler
从其
handleEvent 方法返回 false 或者
Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅
解组 XML 数据
public final Object unmarshal(URL url) throws JAXBException
Unmarshaller
复制的描述
实现解组全局根元素。
Unmarshaller
中的
unmarshal
url
- 将从中解组 XML 数据的 URL
JAXBException
- 如果在解组时发生不可预料的错误
UnmarshalException
- 如果
ValidationEventHandler
从其
handleEvent 方法返回 false 或者
Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅
解组 XML 数据
public final Object unmarshal(File f) throws JAXBException
Unmarshaller
复制的描述
实现解组全局根元素。
Unmarshaller
中的
unmarshal
f
- 将从中解组 XML 数据的文件
JAXBException
- 如果在解组时发生不可预料的错误
UnmarshalException
- 如果
ValidationEventHandler
从其
handleEvent 方法返回 false 或着
Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅
解组 XML 数据
public final Object unmarshal(InputStream is) throws JAXBException
Unmarshaller
复制的描述
实现解组全局根元素。
Unmarshaller
中的
unmarshal
is
- 将从中解组 XML 数据的 InputStream
JAXBException
- 如果在解组时发生不可预料的错误
UnmarshalException
- 如果
ValidationEventHandler
从其
handleEvent 方法返回 false 或者
Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅
解组 XML 数据
public final Object unmarshal(Reader reader) throws JAXBException
Unmarshaller
复制的描述
实现解组全局根元素。
Unmarshaller
中的
unmarshal
reader
- 将从中解组 XML 数据的 Reader
JAXBException
- 如果在解组时发生不可预料的错误
UnmarshalException
- 如果
ValidationEventHandler
从其
handleEvent 方法返回 false 或者
Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅
解组 XML 数据
public boolean isValidating() throws JAXBException
注: 为了与 JAXP 保持一致,我将该方法命名为 isValidating(),而不是 getValidating()。
Unmarshaller
中的
isValidating
JAXBException
- 如果检索验证标志时发生错误
public void setEventHandler(ValidationEventHandler handler) throws JAXBException
如果在调用任一 unmarshal 方法期间发生验证错误,则 JAXB 提供者将调用验证事件处理程序。如果在调用解组方法之前客户端应用程序没有注册验证事件处理程序,那么将忽略所有验证事件,并有可能导致不可预料的行为。
Unmarshaller
中的
setEventHandler
handler
- 验证事件处理程序
JAXBException
- 如果在设置事件处理程序时发生错误
public void setValidating(boolean validating) throws JAXBException
此方法仅在调用某一解组方法之前或之后调用。
Unmarshaller
中的
setValidating
validating
- 如果 Unmarshaller 应该在执行解组操作期间进行验证,则该参数为 true,否则为 false
JAXBException
- 如果在执行解组操作期间启用或禁用验证时发生错误
public ValidationEventHandler getEventHandler() throws JAXBException
Unmarshaller
中的
getEventHandler
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
Unmarshaller
中的
setProperty
name
- 要设置的属性的名称。此值可以使用一个常量字段来指定,也可以是一个用户提供的字符串。
value
- 要设置的属性值
PropertyException
- 如果处理给定属性或值时发生错误
public Object getProperty(String name) throws PropertyException
Unmarshaller
中的
getProperty
name
- 要检索的属性的名称
PropertyException
- 如果检索给定属性或值属性名称时发生错误
public Object unmarshal(XMLEventReader reader) throws JAXBException
Unmarshaller
复制的描述
此方法是一个解组全局根方法。
此方法假定该解析器处于 START_DOCUMENT 或 START_ELEMENT 事件上。解组将从起始事件开始,到相应的终止事件结束。如果此方法成功返回,则 reader 将指向终止事件后面的标记。
Unmarshaller
中的
unmarshal
reader
- 要读取的解析器。
JAXBException
- 如果在解组时发生不可预料的错误
UnmarshalException
- 如果
ValidationEventHandler
从其
handleEvent 方法返回 false 或者
Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅
解组 XML 数据
Unmarshaller.unmarshal(javax.xml.stream.XMLEventReader, Class)
public Object unmarshal(XMLStreamReader reader) throws JAXBException
Unmarshaller
复制的描述
实现解组全局根元素。
此方法假定该解析器处于 START_DOCUMENT 或 START_ELEMENT 事件上。解组将从起始事件开始,到相应的终止事件结束。如果此方法成功返回,则 reader 将指向终止事件后面的标记。
Unmarshaller
中的
unmarshal
reader
- 要读取的解析器。
JAXBException
- 如果在解组时发生不可预料的错误
UnmarshalException
- 如果
ValidationEventHandler
从其
handleEvent 方法返回 false 或者
Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅
解组 XML 数据
Unmarshaller.unmarshal(javax.xml.stream.XMLStreamReader, Class)
public <T> JAXBElement<T> unmarshal(Node node, Class<T> expectedType) throws JAXBException
Unmarshaller
复制的描述
实现借助声明的类型进行解组。
Unmarshaller
中的
unmarshal
node
- 从中解组 XML 数据的文档/元素。调用者至少必须支持 Document 和 Element。
expectedType
- 用来保存
node 的 XML 数据的适当 JAXB