Класс Binder<XmlNode>
- java.lang.Object
-
- javax.xml.bind.Binder<XmlNode>
public abstract class Binder<XmlNode> extends Object
Включить синхронизацию между узлами информационной модели XML и объектами JAXB, представляющими тот же XML-документ.
Экземпляр этого класса сохраняет связь между узлами XML информационной модели и представлением XML-документа в JAXB. Переход между двумя представлениями обеспечивается методами getXMLNode(Object) и getJAXBNode(Object).
Изменения могут быть внесены в представление информационной модели или представление документа в JAXB, при этом другое представление остаётся неизменным. Binder может синхронизировать внесенные изменения в изменённом представлении обратно в другое представление с помощью соответствующих методов обновления Binder, updateXML(Object, Object) или updateJAXB(Object).
Типичный сценарий использования следующий:
- загрузка XML-документа в представление XML-информационной модели
-
unmarshal(Object)представление XML-информационной модели в представление JAXB. (Для экономии ресурсов можно выполнить разбор только поддерева представления XML-информационной модели в представление JAXB.) - доступ/обновление приложения к представлению 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-информационной модели.
- С:
- JAXB 2.0
Конструкторы
| Конструктор и описание |
|---|
Binder() |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
abstract ValidationEventHandler |
getEventHandler() Возвращает текущего обработчика событий или обработчика по умолчанию, если он не был установлен. |
abstract Object |
getJAXBNode(XmlNode xmlNode) Получает объект JAXB, связанный с заданным XML-элементом. |
abstract Object |
getProperty(String name) Получает определённое свойство в базовой реализации |
abstract Schema |
getSchema() Получает последний объект |
abstract XmlNode |
getXMLNode(Object jaxbObject) Получает XML-элемент, связанный с заданным объектом JAXB. |
abstract void |
marshal(Object jaxbObject,
XmlNode xmlNode) Сериализует дерево объекта JAXB в новый XML-документ. |
abstract void |
setEventHandler(ValidationEventHandler handler) Разрешает приложению зарегистрировать |
abstract void |
setProperty(String name,
Object value) Устанавливает определённое свойство в базовой реализации |
abstract void |
setSchema(Schema schema) Указывает, выполняют ли методы marshal, unmarshal и update валидацию своего XML-содержимого. |
abstract Object |
unmarshal(XmlNode xmlNode) Десериализует представление XML-информационной модели в дерево объекта JAXB. |
abstract <T> JAXBElement<T> |
unmarshal(XmlNode xmlNode,
Class<T> declaredType) Десериализует XML-корневой элемент по предоставленному |
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 Конструкторы
Binder
public Binder()
Методы
unmarshal
Разбор XML-информационного набора в представление дерева объектов JAXB.
Этот метод аналогичен методу Unmarshaller.unmarshal(Node) с добавлением поддержания связи между XML-узлами и созданными объектами JAXB, что позволяет выполнять будущие операции обновления, такие как updateXML(Object, Object) или updateJAXB(Object).
Если getSchema() не равен null, xmlNode и его потомки проверяются во время этой операции.
Этот метод выбрасывает исключение UnmarshalException, если у Binder's JAXBContext нет сопоставления для имени XML-элемента или типа, определяемого через @xsi:type, от xmlNode к классу, сопоставленному с JAXB. Метод unmarshal(Object, Class) позволяет приложению указать класс, сопоставленный с JAXB, к которому xmlNode должен быть сопоставлен.
- Параметры:
-
xmlNode- документ/элемент для разбора XML-данных. - Возвращает:
- новый корневой объект дерева объектов JAXB.
- Исключения:
-
JAXBException- Если при разборе произошли непредвиденные ошибки. -
UnmarshalException- ЕслиValidationEventHandlerвозвращает false из своего методаhandleEventилиBinderне может выполнить привязку XML к Java. -
IllegalArgumentException- Если параметр node равен null.
unmarshal
Разбор корневого элемента XML с помощью указанного declaredType в дерево объектов JAXB.
Реализует Разбор по объявленному типу
Этот метод аналогичен Unmarshaller.unmarshal(Node, Class) с добавлением поддержания связи между XML-узлами и созданными объектами JAXB, что позволяет выполнять будущие операции обновления, такие как updateXML(Object, Object) или updateJAXB(Object).
Если getSchema() не равен null, xmlNode и его потомки проверяются во время этой операции.
- Параметры:
-
xmlNode- документ/элемент для разбора XML-данных. -
declaredType- соответствующий класс, сопоставленный с JAXB, для хранения XML-данныхnode. - Возвращает:
-
JAXB Element представление
node - Исключения:
-
JAXBException- Если при разборе произошли непредвиденные ошибки. -
UnmarshalException- ЕслиValidationEventHandlerвозвращает false из методаhandleEventилиBinderне может выполнить привязку XML к Java. -
IllegalArgumentException- Если любой из входных параметров равен null. - С:
- JAXB2.0
marshal
public abstract void marshal(Object jaxbObject,
XmlNode xmlNode)
throws JAXBException Преобразование дерева объектов JAXB в новый XML-документ.
Этот метод аналогичен Marshaller.marshal(Object, Node) с добавлением поддержания связи между объектами JAXB и созданными XML-узлами, что позволяет выполнять будущие операции обновления, такие как updateXML(Object, Object) или updateJAXB(Object).
Если getSchema() не равен null, генерируемое XML-содержимое проверяется во время этой операции.
- Параметры:
-
jaxbObject- дерево содержимого для преобразования. -
xmlNode- параметр должен быть узлом, принимающим дочерние узлы. - Исключения:
-
JAXBException- Если при преобразовании возникла непредвиденная проблема. -
MarshalException- ЕслиValidationEventHandlerвозвращает false из методаhandleEventилиBinderне может выполнить преобразованиеjaxbObject(или любого объекта, доступного изjaxbObject). -
IllegalArgumentException- Если какой-либо из параметров метода равен null.
getXMLNode
public abstract XmlNode getXMLNode(Object jaxbObject)
Получение XML-элемента, связанного с заданным объектом JAXB.
После того, как дерево объектов JAXB было связано с фрагментом XML, этот метод позволяет перемещаться между двумя деревьями.
Связь между XML-элементом и объектом JAXB устанавливается методами привязки и обновления. Обратите внимание, что эта связь частичная; не все XML-элементы имеют связанные объекты JAXB, и не все объекты JAXB имеют связанные XML-элементы.
- Параметры:
-
jaxbObject- экземпляр, доступный по результатам вызова метода привязки или обновления, который возвратил дерево объектов JAXB. - Возвращает:
- null, если указанный объект JAXB неизвестен этому
Binder, или если он не связан с XML-элементом. - Исключения:
-
IllegalArgumentException- Если параметр jaxbObject равен null.
getJAXBNode
public abstract Object getJAXBNode(XmlNode xmlNode)
Получение объекта JAXB, связанного с заданным XML-элементом.
После того, как дерево объектов JAXB было связано с фрагментом XML, этот метод позволяет перемещаться между двумя деревьями.
Связь между XML-элементом и объектом JAXB устанавливается методами разбора, преобразования и обновления. Обратите внимание, что эта связь частичная; не все XML-элементы имеют связанные объекты JAXB, и не все объекты JAXB имеют связанные XML-элементы.
- Возвращает:
- null, если указанный XML-узел неизвестен этому
Binder, или если он не связан с объектом JAXB. - Исключения:
-
IllegalArgumentException- Если параметр node равен null.
updateXML
public abstract XmlNode updateXML(Object jaxbObject)
throws JAXBException Принимает объект JAXB и обновляет его связанный XML-узел и его потомков.
Это удобный метод:
updateXML( jaxbObject, getXMLNode(jaxbObject));
- Исключения:
-
JAXBException- Если при обновлении соответствующего XML-содержимого возникла непредвиденная проблема. -
IllegalArgumentException- Если параметр jaxbObject равен null.
updateXML
public abstract XmlNode updateXML(Object jaxbObject,
XmlNode xmlNode)
throws JAXBException Изменения в дереве объектов JAXB обновляются в связанном дереве разбора XML.
Эту операцию можно рассматривать как «неразрушающее» преобразование. Разница заключается в том, что вместо создания нового XML-дерева эта операция обновляет существующее дерево, по возможности повторно используя объекты JAXB.
Например, неизвестные элементы/атрибуты в XML, которые не были привязаны к JAXB, останутся нетронутыми (в то время как операция преобразования создаст новое дерево, не содержащее ни одного из них).
В качестве побочного эффекта эта операция обновляет связь между XML-узлами и объектами JAXB.
- Параметры:
-
jaxbObject- корень потенциально изменённого дерева объектов JAXB -
xmlNode- корень целевого XML-дерева обновления - Возвращает:
- обновлённый XML-узел. Как правило, это тот же узел, что вы передали как xmlNode, но это может быть другой объект, например, когда имя тега объекта изменилось.
- Исключения:
-
JAXBException- Если при обновлении соответствующего XML-содержимого возникла непредвиденная проблема. -
IllegalArgumentException- Если любой из входных параметров равен null.
updateJAXB
public abstract Object updateJAXB(XmlNode xmlNode)
throws JAXBException Принимает XML-узел и обновляет его связанный объект JAXB и его потомков.
Эту операцию можно рассматривать как «неразрушающее» разбор. Разница заключается в том, что вместо создания нового дерева JAXB, эта операция обновляет существующее дерево, по возможности повторно используя объекты JAXB.
В качестве побочного эффекта эта операция обновляет связь между XML-узлами и объектами JAXB.
- Возвращает:
- обновлённый объект JAXB. Как правило, это тот же объект, что и был возвращён предыдущим вызовом метода
marshal(Object,Object)илиupdateJAXB(Object), но это может быть другой объект, например, когда имя XML-элемента изменилось. - Исключения:
-
JAXBException- Если при обновлении соответствующего содержимого, сопоставленного с JAXB, возникла непредвиденная проблема. -
IllegalArgumentException- Если параметр node равен null.
setSchema
public abstract void setSchema(Schema schema)
Указывает, выполняют ли методы преобразования, разбора и обновления проверку XML-содержимого.
- Параметры:
-
schema- установить в null для отключения проверки. - См. также:
Unmarshaller.setSchema(Schema)
getSchema
public abstract Schema getSchema()
Возвращает последний объект Schema (включая null), установленный методом setSchema(Schema).
- Возвращает:
- объект Schema для проверки или null, если его нет
setEventHandler
public abstract void setEventHandler(ValidationEventHandler handler)
throws JAXBException Разрешает приложению зарегистрировать обработчик событий валидации.
Обработчик событий будет вызываться поставщиком JAXB в случае возникновения ошибок валидации при вызовах методов Binder разбора, преобразования и обновления.
Вызов этого метода с параметром null приведет к тому, что Binder вернётся к обработчику событий по умолчанию.
- Параметры:
-
handler- обработчик событий валидации. - Исключения:
-
JAXBException- если при установке обработчика событий возникла ошибка.
getEventHandler
public abstract ValidationEventHandler getEventHandler()
throws JAXBException Возвращает текущий обработчик событий или обработчик событий по умолчанию, если он не был установлен.
- Возвращает:
- текущий ValidationEventHandler или обработчик событий по умолчанию, если он не был установлен.
- Исключения:
-
JAXBException- если при получении текущего обработчика событий возникла ошибка.
setProperty
public abstract void setProperty(String name,
Object value)
throws PropertyException Установите конкретное свойство в базовой реализации Binder. Этот метод может использоваться только для установки одного из стандартных свойств разбора/сериализации, определённых JAXB, или свойства, специфичного для поставщика, для связки, разбора или сериализации. Попытка установить неопределённое свойство приведёт к выбрасыванию исключения PropertyException. См. Поддерживаемые свойства разбора и Поддерживаемые свойства сериализации.
- Параметры:
-
name— имя свойства, которое необходимо установить. Это значение может быть указано с помощью одного из постоянных полей или строки, введённой пользователем. -
value— значение свойства, которое необходимо установить - Исключения:
-
PropertyException— при возникновении ошибки при обработке заданного свойства или значения -
IllegalArgumentException— если параметр name имеет значение null
getProperty
public abstract Object getProperty(String name)
throws PropertyException Получить конкретное свойство в базовой реализации Binder. Этот метод может использоваться только для получения одного из стандартных свойств разбора/сериализации, определённых JAXB, или свойства, специфичного для поставщика, для связки, разбора или сериализации. Попытка получить неопределённое свойство приведёт к выбрасыванию исключения PropertyException. См. Поддерживаемые свойства разбора и Поддерживаемые свойства сериализации.
- Параметры:
-
name— имя свойства для извлечения - Возвращает:
- значение запрашиваемого свойства
- Исключения:
-
PropertyException— при возникновении ошибки при извлечении заданного свойства или значения имени свойства -
IllegalArgumentException— если параметр name имеет значение null
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.