|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjavax.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 中的 unmarshalsource - 将从中解组 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 中的 unmarshalsource - 将从中解组 XML 数据的输入源
JAXBException - 如果在解组时发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false 或者 Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅解组 XML 数据
public final Object unmarshal(URL url)
throws JAXBException
Unmarshaller 复制的描述实现解组全局根元素。
Unmarshaller 中的 unmarshalurl - 将从中解组 XML 数据的 URL
JAXBException - 如果在解组时发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false 或者 Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅解组 XML 数据
public final Object unmarshal(File f)
throws JAXBException
Unmarshaller 复制的描述实现解组全局根元素。
Unmarshaller 中的 unmarshalf - 将从中解组 XML 数据的文件
JAXBException - 如果在解组时发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false 或着 Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅解组 XML 数据
public final Object unmarshal(InputStream is)
throws JAXBException
Unmarshaller 复制的描述实现解组全局根元素。
Unmarshaller 中的 unmarshalis - 将从中解组 XML 数据的 InputStream
JAXBException - 如果在解组时发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false 或者 Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅解组 XML 数据
public final Object unmarshal(Reader reader)
throws JAXBException
Unmarshaller 复制的描述实现解组全局根元素。
Unmarshaller 中的 unmarshalreader - 将从中解组 XML 数据的 Reader
JAXBException - 如果在解组时发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false 或者 Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅解组 XML 数据
public boolean isValidating()
throws JAXBException
注: 为了与 JAXP 保持一致,我将该方法命名为 isValidating(),而不是 getValidating()。
Unmarshaller 中的 isValidatingJAXBException - 如果检索验证标志时发生错误
public void setEventHandler(ValidationEventHandler handler)
throws JAXBException
如果在调用任一 unmarshal 方法期间发生验证错误,则 JAXB 提供者将调用验证事件处理程序。如果在调用解组方法之前客户端应用程序没有注册验证事件处理程序,那么将忽略所有验证事件,并有可能导致不可预料的行为。
Unmarshaller 中的 setEventHandlerhandler - 验证事件处理程序
JAXBException - 如果在设置事件处理程序时发生错误
public void setValidating(boolean validating)
throws JAXBException
此方法仅在调用某一解组方法之前或之后调用。
Unmarshaller 中的 setValidatingvalidating - 如果 Unmarshaller 应该在执行解组操作期间进行验证,则该参数为 true,否则为 false
JAXBException - 如果在执行解组操作期间启用或禁用验证时发生错误
public ValidationEventHandler getEventHandler()
throws JAXBException
Unmarshaller 中的 getEventHandlerJAXBException - 如果获取当前事件处理程序时发生错误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 中的 setPropertyname - 要设置的属性的名称。此值可以使用一个常量字段来指定,也可以是一个用户提供的字符串。value - 要设置的属性值
PropertyException - 如果处理给定属性或值时发生错误
public Object getProperty(String name)
throws PropertyException
Unmarshaller 中的 getPropertyname - 要检索的属性的名称
PropertyException - 如果检索给定属性或值属性名称时发生错误
public Object unmarshal(XMLEventReader reader)
throws JAXBException
Unmarshaller 复制的描述此方法是一个解组全局根方法。
此方法假定该解析器处于 START_DOCUMENT 或 START_ELEMENT 事件上。解组将从起始事件开始,到相应的终止事件结束。如果此方法成功返回,则 reader 将指向终止事件后面的标记。
Unmarshaller 中的 unmarshalreader - 要读取的解析器。
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 中的 unmarshalreader - 要读取的解析器。
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 中的 unmarshalnode - 从中解组 XML 数据的文档/元素。调用者至少必须支持 Document 和 Element。expectedType - 用来保存 node 的 XML 数据的适当 JAXB 映射类。
JAXBException - 如果在解组时发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false 或者 Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅解组 XML 数据
public <T> JAXBElement<T> unmarshal(Source source,
Class<T> expectedType)
throws JAXBException
Unmarshaller 复制的描述实现借助声明的类型进行解组。
请参阅 SAX 2.0 解析器的可插入性
Unmarshaller 中的 unmarshalsource - 将从中解组 XML 数据的 XML Source(提供者只需支持 SAXSource、DOMSource 和 StreamSource)expectedType - 用来保存 source 的 xml 根元素的适当 JAXB 映射类
JAXBException - 如果在解组时发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false 或者 Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅解组 XML 数据
public <T> JAXBElement<T> unmarshal(XMLStreamReader reader,
Class<T> expectedType)
throws JAXBException
Unmarshaller 复制的描述此方法实现借助 declaredType 进行解组。
此方法假定该解析器处于 START_DOCUMENT 或 START_ELEMENT 事件上。解组将从起始事件开始,到相应的终止事件结束。如果此方法成功返回,则 reader 将指向终止事件后面的标记。
Unmarshaller 中的 unmarshalreader - 要读取的解析器。expectedType - 用来保存 reader 的 START_ELEMENT XML 数据的适当 JAXB 映射类。
JAXBException - 如果在解组时发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false 或者 Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅解组 XML 数据
public <T> JAXBElement<T> unmarshal(XMLEventReader reader,
Class<T> expectedType)
throws JAXBException
Unmarshaller 复制的描述此方法实现借助 declaredType 进行解组。
此方法假定该解析器处于 START_DOCUMENT 或 START_ELEMENT 事件上。解组将从起始事件开始,到相应的终止事件结束。如果此方法成功返回,则 reader 将指向终止事件后面的标记。
Unmarshaller 中的 unmarshalreader - 要读取的解析器。expectedType - 用来保存 reader 的 START_ELEMENT XML 数据的适当 JAXB 映射类。
JAXBException - 如果在解组时发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false 或者 Unmarshaller 不能执行 XML 到 Java 的绑定。请参阅解组 XML 数据public void setSchema(Schema schema)
Unmarshaller 复制的描述Schema 对象。向此方法传递 null 将禁用验证。
此方法将替换已过时的 setValidating(boolean) API。
最初,此属性被设置为 null。
Unmarshaller 中的 setSchemaschema - 作为验证解组操作依据的 Schema 对象;为 null 表示禁用验证public Schema getSchema()
Unmarshaller 复制的描述Schema 对象。如果没有在 unmarshaller 上设置 Schema,则此方法将返回 null,指示不会执行解组时验证。
此方法用于替换已过时的 Unmarshaller.isValidating() API,并可访问 Schema 对象。要确定 Unmarshaller 是否启用了验证,只需测试返回类型是否为 null:
boolean isValidating = u.getSchema()!=null;
Unmarshaller 中的 getSchemapublic void setAdapter(XmlAdapter adapter)
Unmarshaller 复制的描述XmlAdapter 实例与此 unmarshaller 关联。
这是调用 setAdapter(adapter.getClass(),adapter); 的一个便捷方法。
Unmarshaller 中的 setAdapterUnmarshaller.setAdapter(Class,XmlAdapter)
public <A extends XmlAdapter> void setAdapter(Class<A> type,
A adapter)
Unmarshaller 复制的描述XmlAdapter 实例与此 unmarshaller 关联。
每个 unmarshaller 都可以在内部维护一个 Map<Class,XmlAdapter>,可用来解组使用 XmlJavaTypeAdapter 注释其字段/方法的类。
此方法允许应用程序使用已配置好的 XmlAdapter 实例。如果没有给出适配器实例,则 unmarshaller 将调用其默认构造方法创建一个实例。
Unmarshaller 中的 setAdaptertype - 适配器的类型。当 XmlJavaTypeAdapter.value() 引用此类型时,将使用指定的实例。adapter - 将要使用的适配器实例。如果为 null,则将注销此类型的当前适配器集合。public <A extends XmlAdapter> A getAdapter(Class<A> type)
Unmarshaller 复制的描述Unmarshaller.setAdapter(javax.xml.bind.annotation.adapters.XmlAdapter) 方法的反向操作。
Unmarshaller 中的 getAdapterpublic void setAttachmentUnmarshaller(AttachmentUnmarshaller au)
Unmarshaller 复制的描述将解析 cid(内容 id URI)的上下文与作为附件传递的二进制数据关联。
通过 Unmarshaller.setSchema(Schema) 启用的解组时验证,即使在 unmarshaller 执行 XOP 处理时也必须支持。
Unmarshaller 中的 setAttachmentUnmarshallerpublic AttachmentUnmarshaller getAttachmentUnmarshaller()
Unmarshaller 中的 getAttachmentUnmarshallerpublic void setListener(Unmarshaller.Listener listener)
Unmarshaller 复制的描述
向此 Unmarshaller 注册解组事件回调 Unmarshaller.Listener。
每个 Unmarshaller 只有一个 Listener。设置 Listener 将替换以前设置的 Listener。通过将 listener 设置为 null 可注销当前的 Listener。
Unmarshaller 中的 setListenerlistener - 为此 Unmarshaller 提供解组事件回调public Unmarshaller.Listener getListener()
Unmarshaller 复制的描述返回向此 Unmarshaller 注册的 Unmarshaller.Listener。
Unmarshaller 中的 getListenerUnmarshaller.Listener;如果未向此 Unmarshaller 注册任何 Listener,则返回 null。
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。