|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjavax.xml.bind.Binder<XmlNode>
public abstract class Binder<XmlNode>
在 XML 信息集节点和表示相同 XML 文档的 JAXB 对象之间启用同步。
此类的实例维护了保留视图的信息集的 XML 节点与 XML 文档的 JAXB 表示形式之间的关联。两个视图之间的导航由方法 getXMLNode(Object) 和 getJAXBNode(Object) 提供。
可以在其他视图保持不变的情况下,对保留视图的信息集或文档的 JAXB 表示形式进行修改。Binder 能够使用适当的 Binder 更新方法(updateXML(Object, Object) 或 updateJAXB(Object))将在修改视图中所做的更改同步到其他视图中。
下面是一个典型的使用场景:
unmarshal(Object) XML 信息集视图加载到 JAXB 视图。(注意保存资源,可以只将 XML 信息集视图的子树解组为 JAXB 视图。)updateXML(Object) 可将对 JAXB 视图的修改同步到 XML 信息集视图中。更新操作将尽可能多地保留原始 XML 信息集(如注释、PI 等等)
Binder 实例是使用工厂方法 JAXBContext.createBinder() 或 JAXBContext.createBinder(Class) 创建的。
模板参数 XmlNode 是保留表示形式的 XML 信息集的根接口/类。Binder 实现至少需要支持 org.w3c.dom.Node.class 的一个 XmlNode 值。Binder 实现可以支持保留表示形式的备用 XML 信息集。
| 构造方法摘要 | |
|---|---|
Binder()
|
|
| 方法摘要 | ||
|---|---|---|
abstract ValidationEventHandler |
getEventHandler()
当前的事件处理程序;如果没有设置,则返回默认事件处理程序。 |
|
abstract Object |
getJAXBNode(XmlNode xmlNode)
获取与给定 XML 元素关联的 JAXB 对象。 |
|
abstract Object |
getProperty(String name)
获取 Binder 的基础实现中的特定属性。 |
|
abstract Schema |
getSchema()
获取 setSchema(Schema) 方法设置的最后一个 Schema 对象(包括 null)。 |
|
abstract XmlNode |
getXMLNode(Object jaxbObject)
获取与给定 JAXB 对象关联的 XML 元素。 |
|
abstract void |
marshal(Object jaxbObject,
XmlNode xmlNode)
将 JAXB 对象树编组为新的 XML 文档。 |
|
abstract void |
setEventHandler(ValidationEventHandler handler)
允许应用程序注册 ValidationEventHandler。 |
|
abstract void |
setProperty(String name,
Object value)
设置 Binder 的基础实现中的特定属性。 |
|
abstract void |
setSchema(Schema schema)
指定 marshal、unmarshal 和 update 方法是否在其 XML 内容上执行验证。 |
|
abstract Object |
unmarshal(XmlNode xmlNode)
将 XML 信息集视图解组为 JAXB 对象树。 |
|
abstract
|
unmarshal(XmlNode xmlNode,
Class<T> declaredType)
根据提供的 declaredType 将 XML 根元素解组为 JAXB 对象树。 |
|
abstract Object |
updateJAXB(XmlNode xmlNode)
取一个 XML 节点,并更新与其关联的 JAXB 对象和该对象的子级。 |
|
abstract XmlNode |
updateXML(Object jaxbObject)
取一个 JAXB 对象,并更新与其关联的 XML 节点和该节点的子级。 |
|
abstract XmlNode |
updateXML(Object jaxbObject,
XmlNode xmlNode)
JAXB 对象树中所做的更改在与其关联的 XML 解析树中得到更新。 |
|
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 构造方法详细信息 |
|---|
public Binder()
| 方法详细信息 |
|---|
public abstract Object unmarshal(XmlNode xmlNode)
throws JAXBException
此方法类似于添加了维持 XML 节点与生成的 JAXB 对象之间关联功能的 Unmarshaller.unmarshal(Node),它还支持未来更新操作,如 updateXML(Object, Object) 或 updateJAXB(Object)。
当 getSchema() 为非 null 时,可以在执行此操作期间验证 xmlNode 及其子节点。
当 Binder 的 JAXBContext 不存在将 xmlNode 的 XML 元素名称或类型(通过 @xsi:type 指定)映射到 JAXB 映射类的映射关系时,此方法抛出 UnmarshalException。unmarshal(Object, Class) 方法使应用程序能够指定 xmlNode 应该映射到哪个 JAXB 映射类。
xmlNode - 要解组其中的 XML 数据的文档/元素。
JAXBException - 如果进行解组期间发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false,或者 Binder 不能执行 XML 到 Java 的绑定。
IllegalArgumentException - 如果节点参数为 null
public abstract <T> JAXBElement<T> unmarshal(XmlNode xmlNode,
Class<T> declaredType)
throws JAXBException
此方法类似于添加了维持 XML 节点与生成的 JAXB 对象之间关联功能的 Unmarshaller.unmarshal(Node, Class),它还支持未来更新操作,如 updateXML(Object, Object) 或 updateJAXB(Object)。
当 getSchema() 为非 null 时,可以在执行此操作期间验证 xmlNode 及其子节点。
xmlNode - 要解组其中的 XML 数据的文档/元素。declaredType - 用来保存 node 的 XML 数据的适当 JAXB 映射类。
JAXBException - 如果进行解组期间发生不可预料的错误
UnmarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false,或者 Binder 不能执行 XML 到 Java 的绑定。
IllegalArgumentException - 如果任何输入参数为 null
public abstract void marshal(Object jaxbObject,
XmlNode xmlNode)
throws JAXBException
此方法类似于添加了维持 JAXB 对象和产生的 XML 节点之间关联功能的 Marshaller.marshal(Object, Node),它还支持未来更新操作,如 updateXML(Object, Object) 或 updateJAXB(Object)。
当 getSchema() 为非 null 时,可在执行此操作期间验证已编组的 xml 内容。
jaxbObject - 将被编组的内容树。xmlNode - 该参数必须是一个接受子节点的节点。
JAXBException - 如果进行解组期间发生不可预料的错误。
MarshalException - 如果 ValidationEventHandler 从其 handleEvent 方法返回 false,或者 Binder 不能编组 jaxbObject(或任何可从 jaxbObject 获得的对象)。
IllegalArgumentException - 如果任何方法的参数为 nullpublic abstract XmlNode getXMLNode(Object jaxbObject)
一旦 JAXB 对象树与 XML 片段关联,此方法将在两树之间启用导航。
XML 元素与 JAXB 对象之间的关联是通过 bind 方法和 update 方法建立的。注意,此关联是片面的;并不是所有 XML 元素都有关联的 JAXB 对象,也不是所有 JAXB 对象都有关联的 XML 元素。
jaxbObject - 可从以前对返回 JAXB 对象树的 bind 或 update 方法的调用中获得的实例。
Binder 为未知对象,或者该对象与 XML 元素没有任何关联,则返回 null。
IllegalArgumentException - 如果 jaxbObject 参数为 nullpublic abstract Object getJAXBNode(XmlNode xmlNode)
一旦 JAXB 对象树与 XML 片段关联,此方法将在两树之间启用导航。
XML 元素和 JAXB 对象之间的关联是通过 unmarshal、marshal 和 update 方法建立的。注意,此关联是片面的;并不是所有 XML 元素都有关联的 JAXB 对象,也不是所有 JAXB 对象都有关联的 XML 元素。
Binder 为未知节点,或者该节点与 JAXB 对象没有任何关联,则返回 null。
IllegalArgumentException - 如果节点参数为 null
public abstract XmlNode updateXML(Object jaxbObject)
throws JAXBException
这是如下调用的一种便捷方法:
updateXML( jaxbObject, getXMLNode(jaxbObject));
JAXBException - 如果更新相应的 XML 内容时出现任何不可预料的问题。
IllegalArgumentException - 如果 jaxbObject 参数为 null
public abstract XmlNode updateXML(Object jaxbObject,
XmlNode xmlNode)
throws JAXBException
可将此操作视为“原地(in-place)”编组。不同点在于,此操作不是创建一个全新的 XML 树,而是在试图尽可能多地保留 XML 的同时更新现有的树。
例如,没有绑定到 JAXB 的 XML 中的未知元素/属性将保持不变(而编组操作将创建一个不包含任何元素/属性的新树。)
另一方面,此操作会更新 XML 节点与 JAXB 对象之间的关联。
jaxbObject - 可能已修改的 JAXB 对象树的根xmlNode - 更新目标 XML 解析树的根
JAXBException - 如果更新相应 XML 内容时出现任何不可预料的问题。
IllegalArgumentException - 如何任何输入参数为 null
public abstract Object updateJAXB(XmlNode xmlNode)
throws JAXBException
可将此操作视为“原地”解组。不同点在于,此操作不是创建一个全新 JAXB 树,而是更新现有的树,尽可能多地重用 JAXB 对象。
另一方面,此操作会更新 XML 节点与 JAXB 对象之间的关联。
marshal(Object,Object) 或 updateJAXB(Object) 方法调用中返回的同一对象,但可以是不同的对象,例如在 XML 元素的名称发生更改时。
JAXBException - 如果更新相应的 JAXB 映射内容时出现任何不可预料的问题。
IllegalArgumentException - 如果节点参数为 nullpublic abstract void setSchema(Schema schema)
schema - 可将此参数设置为 null 来禁用验证。Unmarshaller.setSchema(Schema)public abstract Schema getSchema()
setSchema(Schema) 方法设置的最后一个 Schema 对象(包括 null)。
public abstract void setEventHandler(ValidationEventHandler handler)
throws JAXBException
如果在调用任何 Binder 的 unmarshal、marshal 和 update 方法期间遇到验证错误,JAXB 提供者将调用 ValidationEventHandler。
调用带有 null 参数的此方法将导致 Binder 转而调用默认事件处理程序。
handler - 验证事件处理程序
JAXBException - 如果在设置事件处理程序时发生错误
public abstract ValidationEventHandler getEventHandler()
throws JAXBException
JAXBException - 如果获取当前的事件处理程序时发生错误
public abstract void setProperty(String name,
Object value)
throws PropertyException
name - 要设置的属性的名称。此值可以使用一个常量字段来指定,也可以是一个用户提供的字符串。value - 要设置的属性值
PropertyException - 如果处理给定属性或值时发生错误
IllegalArgumentException - 如果 name 参数为 null
public abstract Object getProperty(String name)
throws PropertyException
name - 将检索的属性名称
PropertyException - 如果检索给定属性或值属性名称时发生错误
IllegalArgumentException - 如果 name 参数为 null
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。