public abstract class Binder<XmlNode> extends Object
 此类的实例维护信息集维护视图的XML节点与XML文档的JAXB表示形式之间的关联。 这两个视图之间的导航由方法getXMLNode(Object)和getJAXBNode(Object)提供 。 
 可以对信息保留视图或文档的JAXB表示进行修改,而另一个视图保持未修改。 活页夹能够使用适当的Binder更新方法( updateXML(Object, Object)或updateJAXB(Object))将修改后的视图中所做的更改同步到其他视图。 
典型的使用场景如下:
unmarshal(Object)到JAXB视图的XML信息集视图。 (注意节省资源,只能将XML信息集视图的子树解组到JAXB视图。) updateXML(Object)将JAXB视图的修改同步到XML信息集视图中。 更新操作保留尽可能多的原始XML信息集(即注释,PI,...)  Binder实例使用工厂方法JAXBContext.createBinder()或JAXBContext.createBinder(Class)创建 。 
 模板参数XmlNode是XML信息集维护表示的根接口/类。 需要一个Binder实现来最低限度地支持XmlNode值org.w3c.dom.Node.class 。 Binder实现可以支持替代的XML信息集保留表示。 
| Constructor and Description | 
|---|
| Binder() | 
| Modifier and Type | Method and Description | 
|---|---|
| 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 <T> JAXBElement<T> | unmarshal(XmlNode xmlNode, 类<T> declaredType)
              通过向JAXB对象树提供 
             declaredType解组XML根元素。 
             | 
| abstract Object | updateJAXB(XmlNode xmlNode)
              获取一个XML节点并更新其关联的JAXB对象及其后代。 
             | 
| abstract XmlNode | updateXML(Object jaxbObject)
              获取JAXB对象并更新其关联的XML节点及其后代。 
             | 
| abstract XmlNode | updateXML(Object jaxbObject, XmlNode xmlNode)
              在其关联的XML解析树中更新JAXB对象树中的更改。 
             | 
public abstract Object unmarshal(XmlNode xmlNode) throws JAXBException
 该方法类似于Unmarshaller.unmarshal(Node) ,其中添加了维护XML节点和生成的JAXB对象之间的关联,从而实现将来的更新操作, updateXML(Object, Object)或updateJAXB(Object) 。 
 当getSchema()为非空时, xmlNode及其后代在此操作期间被验证。 
 此方法抛出UnmarshalException当粘合剂的JAXBContext不具有XML元素名称或类型到JAXB映射类的映射,经由@xsi:type可指定的xmlNode。 方法unmarshal(Object, Class)使应用程序能够指定xmlNode应映射到的JAXB映射类。 
xmlNode - 从中解开XML数据的文件/元素。 
           JAXBException - 解组时是否发生意外错误 
           UnmarshalException - 如果ValidationEventHandler从其handleEvent方法返回false,或者Binder无法执行XML到Java绑定。 
           IllegalArgumentException - 如果节点参数为空 
           public abstract <T> JAXBElement<T> unmarshal(XmlNode xmlNode, 类<T> declaredType) throws JAXBException
 该方法类似于Unmarshaller.unmarshal(Node, Class) ,其中添加了维护XML节点和生成的JAXB对象之间的关联,从而实现将来的更新操作, updateXML(Object, Object)或updateJAXB(Object) 。 
 当getSchema()为非空时, xmlNode及其后代在此操作期间被验证。 
xmlNode - 从中解开XML数据的文档/元素。 
           declaredType - 适当的JAXB映射类保存 
            node的XML数据。 
           JAXBException - 解组时是否发生意外错误 
           UnmarshalException - 如果ValidationEventHandler从其handleEvent方法返回false,或Binder无法执行XML到Java绑定。 
           IllegalArgumentException - 如果任何输入参数为空 
           public abstract void marshal(Object jaxbObject, XmlNode xmlNode) throws JAXBException
 此方法类似于Marshaller.marshal(Object, Node) ,增加了维护JAXB对象和生成的XML节点之间的关联,从而实现了未来的更新操作,例如updateXML(Object, Object)或updateJAXB(Object) 。 
 当getSchema()为非空值时,在此操作期间验证已编组的xml内容。 
jaxbObject - 要编组的内容树。 
           xmlNode - 参数必须是接受子节点的节点。 
           JAXBException - 如果在编组过程中发生意外问题。 
           MarshalException - 如果ValidationEventHandler从其handleEvent方法返回false,或者Binder无法组织jaxbObject (或任何可从jaxbObject可访问的对象)。 
           IllegalArgumentException - 如果任何方法参数为空 
           public abstract XmlNode getXMLNode(Object jaxbObject)
一旦JAXB对象树与XML片段相关联,该方法就可以在两个树之间进行导航。
通过绑定方法和更新方法建立XML元素和JAXB对象之间的关联。 请注意,此关联是部分的; 并不是所有的XML元素都具有关联的JAXB对象,并不是所有的JAXB对象都具有关联的XML元素。
jaxbObject - 从先前调用返回JAXB对象树的绑定或更新方法可访问的实例。 
           Binder ,或者如果它不与XML元素相关联 ,则为null。 
           IllegalArgumentException - 如果jaxbObject参数为空 
           public abstract Object getJAXBNode(XmlNode xmlNode)
一旦JAXB对象树与XML片段相关联,该方法就可以在两个树之间进行导航。
XML元素和JAXB对象之间的关联是由unmarshal,marshal和update方法建立的。 请注意,此关联是部分的; 并不是所有的XML元素都具有关联的JAXB对象,并不是所有的JAXB对象都具有关联的XML元素。
Binder不知道,或者如果它不与JAXB对象相关联 ,则为null。 
           IllegalArgumentException - 如果节点参数为空 
           public abstract XmlNode updateXML(Object jaxbObject) throws JAXBException
这是一种方便的方法:
  updateXML( jaxbObject, getXMLNode(jaxbObject));  
          JAXBException - 如果任何意外的问题发生更新对应的XML内容。 
           IllegalArgumentException - 如果jaxbObject参数为空 
           public abstract XmlNode updateXML(Object jaxbObject, XmlNode xmlNode) throws JAXBException
这个操作可以被认为是一个“就地”编组。 不同的是,这个操作不是创建一个全新的XML树,而是更新一个现有的树,同时尽可能地保留XML。
例如,未绑定到JAXB的XML中的未知元素/属性将保持不变(而编组操作将创建不包含任何这些的新树)。
作为副作用,此操作更新XML节点和JAXB对象之间的关联。
jaxbObject - 潜在修改的JAXB对象树的根 
           xmlNode - 更新目标XML解析树的根 
           JAXBException - 如果任何意外的问题发生更新对应的XML内容。 
           IllegalArgumentException - 如果任何输入参数为空 
           public abstract Object updateJAXB(XmlNode xmlNode) throws JAXBException
这个操作可以被认为是一个“就地”解组。 不同之处在于,该操作不是创建一个全新的JAXB树,而是更新现有的树,尽可能多地重用JAXB对象。
作为副作用,此操作更新XML节点和JAXB对象之间的关联。
marshal(Object,Object)或updateJAXB(Object)方法调用返回的相同对象,但它可能是一个不同的对象,例如当XML元素的名称已更改时。 
           JAXBException - 如果任何意外的问题发生更新相应的JAXB映射内容。 
           IllegalArgumentException - 如果节点参数为空 
           public 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
ValidationEventHandler将由JAXB提供程序调用,如果在调用任何Binder拆组,组织和更新方法时遇到任何验证错误。
使用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 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.