|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface Marshaller
Marshaller class ответственен за управление процессом сериализации деревьев контента Java назад в данные XML. Это обеспечивает основные методы маршалинга:
Примите следующий код установки для всего после фрагментов кода:
JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" );
Unmarshaller u = jc.createUnmarshaller();
Object element = u.unmarshal( new File( "foo.xml" ) );
Marshaller m = jc.createMarshaller();
Маршалинг к Файлу:
OutputStream os = new FileOutputStream( "nosferatu.xml" );
m.marshal( element, os );
Маршалинг к SAX ContentHandler:
// assume MyContentHandler instanceof ContentHandler
m.marshal( element, new MyContentHandler() );
Маршалинг ДОМУ Ноуду:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
m.marshal( element, doc );
Маршалинг к java.io. OutputStream:
m.marshal( element, System.out );
Маршалинг к java.io. Писатель:
m.marshal( element, new PrintWriter( System.out ) );
Маршалинг к javax.xml.transform. SAXResult:
// assume MyContentHandler instanceof ContentHandler
SAXResult result = new SAXResult( new MyContentHandler() );
m.marshal( element, result );
Маршалинг к javax.xml.transform. DOMResult:
DOMResult result = new DOMResult();
m.marshal( element, result );
Маршалинг к javax.xml.transform. StreamResult:
StreamResult result = new StreamResult( System.out );
m.marshal( element, result );
Маршалинг к javax.xml.stream. XMLStreamWriter:
XMLStreamWriter xmlStreamWriter =
XMLOutputFactory.newInstance().createXMLStreamWriter( ... );
m.marshal( element, xmlStreamWriter );
Маршалинг к javax.xml.stream. XMLEventWriter:
XMLEventWriter xmlEventWriter =
XMLOutputFactory.newInstance().createXMLEventWriter( ... );
m.marshal( element, xmlEventWriter );
Маршалинг дерева контента базировался элементом JAXB
Первый параметр перегруженных методов Marshaller.marshal(java.lang.Object, ...) должен быть элементом JAXB как вычисленоJAXBIntrospector.isElement(java.lang.Object); иначе, метод Marshaller.marshal должен бросить aMarshalException. Там существуйте два механизма, чтобы позволить упорядочить экземпляр, который не является элементом JAXB. Один метод должен обернуть экземпляр как значение aJAXBElement, и передайте элемент обертки как первый параметр к методу Marshaller.marshal. Для java к привязке схемы также возможно просто аннотировать class экземпляраXmlRootElement.
Кодирование
По умолчанию Marshaller будет использовать кодирование UTF-8, генерируя данные XML к java.io.OutputStream, или java.io.Writer. Используйте setProperty API, чтобы изменить выходное кодирование, используемое во время них, упорядочивает операции. Клиентские приложения, как ожидают, предоставят допустимое имя кодировки символов как определено в и поддерживаются Вашей .
Проверка допустимости и Отмеченность
Клиентские приложения не обязаны проверять дерева контента Java до вызова любого упорядочивать API. Кроме того нет никакого требования, что дерево контента Java быть допустимым относительно его исходной схемы, чтобы упорядочить его назад в данные XML. Различные Провайдеры JAXB будут поддерживать упорядочивающие недопустимые деревья контента Java на переменных уровнях, однако все Провайдеры JAXB должны быть в состоянии упорядочить допустимое дерево контента назад к данным XML. Провайдер JAXB должен бросить MarshalException, когда это неспособно завершить упорядочивать работу из-за недопустимого контента. Некоторые Провайдеры JAXB полностью позволят упорядочивать недопустимый контент, другие перестанут работать на первой ошибке проверки допустимости.
Даже когда проверка допустимости схемы не является explictly, включенным для упорядочивать работы, возможно, что определенные типы событий проверки допустимости будут обнаружены во время работы. О событиях проверки допустимости сообщат зарегистрированному обработчику событий. Если клиентское приложение не зарегистрировало обработчик событий до вызова одного из упорядочивать API, то события будут поставлены обработчику стандартного события, который завершит упорядочивать работу после обнаружения с первой ошибкой или фатальной ошибкой. Отметьте это JAXB 2.0 и более поздними версиями,
DefaultValidationEventHandlerбольше не используется.
Все Провайдеры JAXB обязаны поддерживать следующий набор свойств. Некоторые провайдеры могут поддерживать дополнительные свойства.
- jaxb.encoding - значение должно быть java.lang. Строка
- Выходное кодирование, чтобы использовать, упорядочивая данные XML. Marshaller будет использовать "UTF-8" по умолчанию, если это свойство не будет определено.
- jaxb.formatted.output - значение должно быть java.lang. Булев
- Это свойство управляет, отформатирует ли Marshaller получающиеся данные XML с разрывами строки и добавлением отступа. Истинное значение для этого свойства указывает удобочитаемый, располагал xml данные с отступом, в то время как ложное значение указывает на восстановленные после форматирования xml данные. Marshaller примет значение по умолчанию ко лжи (восстановленной после форматирования), если это свойство не будет определено.
- jaxb.schemaLocation - значение должно быть java.lang. Строка
- Это свойство позволяет клиентскому приложению определять атрибут xsi:schemaLocation в сгенерированных данных XML. Формат schemaLocation значения атрибута обсуждается в легком, чтобы понять, ненормативная форма в и определенный в .
- jaxb.noNamespaceSchemaLocation - значение должно быть java.lang. Строка
- Это свойство позволяет клиентскому приложению определять атрибут xsi:noNamespaceSchemaLocation в сгенерированных данных XML. Формат schemaLocation значения атрибута обсуждается в легком, чтобы понять, ненормативная форма в и определенный в .
- jaxb.fragment - значение должно быть java.lang. Булев
- Это свойство определяет, будут ли события уровня документа сгенерированы Marshaller. Если свойство не определяется, значением по умолчанию является false. У этого свойства есть различные импликации, в зависимости от которых упорядочивают api, который Вы используете - когда это свойство устанавливается в истину:
marshal(Object,ContentHandler)- Marshaller не будет вызыватьContentHandler.startDocument()иContentHandler.endDocument().marshal(Object,Node)- свойство не имеет никакого эффекта на этот API.marshal(Object,OutputStream)- Marshaller не будет генерировать xml объявление.marshal(Object,Writer)- Marshaller не будет генерировать xml объявление.marshal(Object,Result)- зависит от вида объекта Результата, см. семантику для Узла, ContentHandler, и Потоковых APImarshal(Object,XMLEventWriter)- Marshaller не будет генерироватьXMLStreamConstants.START_DOCUMENTиXMLStreamConstants.END_DOCUMENTсобытия.marshal(Object,XMLStreamWriter)- Marshaller не будет генерироватьXMLStreamConstants.START_DOCUMENTиXMLStreamConstants.END_DOCUMENTсобытия.
Упорядочьте Обратные вызовы События
"Marshallerобеспечивает два стиля механизмов обратного вызова, которые позволяют специализированную обработку во время ключевых пунктов в процессе немаршалинга. В обратных вызовах события 'class defined' специализированный код, помещенный в JAXB отображенные классы, инициирован во время маршалинга. 'Внешние слушатели' учитывают централизованную обработку, упорядочивают события в одном методе обратного вызова, а не обратными вызовами события типа.Класс определенные методы обратного вызова события позволяет любому JAXB отображенный class, чтобы определить его собственные определенные методы обратного вызова, определяя методы с помощью следующих сигнатур методов:
Определенные методы обратного вызова события class должны использоваться, когда метод обратного вызова требует доступа к непубличным методам и/или полям class.// Invoked by Marshaller after it has created an instance of this object. boolean beforeMarshal(Marshaller); // Invoked by Marshaller after it has marshalled all properties of this object. void afterMmarshal(Marshaller);Внешний механизм обратного вызова слушателя включает регистрации a
Marshaller.Listenerэкземпляр с asetListener(Listener). Внешний слушатель получает все события обратного вызова, учитывая более централизованную обработку чем на class определенные методы обратного вызова.'class определенные' и внешние методы обратного вызова события слушателя независимы друг от друга, обоих можно вызвать для одного события. Упорядочивание вызова, когда оба метода обратного вызова слушателя существуют, определяется в
Marshaller.Listener.beforeMarshal(Object)иMarshaller.Listener.afterMarshal(Object).Метод обратного вызова события, выдающий исключение, завершается, ток упорядочивают процесс.
JAXBContext, Validator, Unmarshaller| Модификатор и Тип | Интерфейс и Описание |
|---|---|
static class |
Marshaller. Слушатель
Зарегистрируйте экземпляр реализации этого class с a
Marshaller чтобы внешне прислушаться упорядочивают события. |
| Модификатор и Тип | Поле и Описание |
|---|---|
static String |
JAXB_ENCODING
Имя свойства, используемого, чтобы определить выходное кодирование в упорядоченных данных XML.
|
static String |
JAXB_FORMATTED_OUTPUT
Имя свойства, используемого, чтобы определить, форматируются ли упорядоченные данные XML с переводами строки и добавлением отступа.
|
static String |
JAXB_FRAGMENT
Имя свойства, используемого, чтобы определить, генерирует ли marshaller события уровня документа (то есть вызывающий startDocument или endDocument).
|
static String |
JAXB_NO_NAMESPACE_SCHEMA_LOCATION
Имя свойства, используемого, чтобы определить xsi:noNamespaceSchemaLocation значение атрибута, чтобы поместить в упорядоченный вывод XML.
|
static String |
JAXB_SCHEMA_LOCATION
Имя свойства, используемого, чтобы определить xsi:schemaLocation значение атрибута, чтобы поместить в упорядоченный вывод XML.
|
| Модификатор и Тип | Метод и Описание |
|---|---|
<A extends XmlAdapter> |
getAdapter(Class<A> type)
Связали адаптер с указанным типом.
|
AttachmentMarshaller |
getAttachmentMarshaller() |
ValidationEventHandler |
getEventHandler()
Возвратите текущий обработчик событий или обработчик стандартного события, если Вы не были установлены.
|
Marshaller. Слушатель |
getListener()
Возвратиться
Marshaller.Listener зарегистрированный в этом Marshaller. |
Узел |
getNode(Object contentTree)
Получите структурный вид ДОМА (Дополнительного) дерева контента.
|
Объект |
getProperty(String name)
Получите определенное свойство в базовой реализации Marshaller.
|
Схема |
getSchema()
Получите JAXP 1.3
Schema объект, используемый, чтобы выполнить, упорядочивает разовую проверку допустимости. |
void |
marshal(Object jaxbElement, ContentHandler handler)
Упорядочьте дерево контента, базированное в событиях jaxbElement into SAX2.
|
void |
marshal(Object jaxbElement, File output)
Упорядочьте дерево контента, базированное в jaxbElement в файл.
|
void |
marshal(Object jaxbElement, Node node)
Упорядочьте дерево контента, базированное в jaxbElement в дерево ДОМА.
|
void |
marshal(Object jaxbElement, OutputStream os)
Упорядочьте дерево контента, базированное в jaxbElement в поток вывода.
|
void |
marshal(Object jaxbElement, Result result)
Упорядочьте дерево контента, базированное в jaxbElement в указанный javax.xml.transform.Result.
|
void |
marshal(Object jaxbElement, Writer writer)
Упорядочьте дерево контента, базированное в jaxbElement в Писателя.
|
void |
marshal(Object jaxbElement, XMLEventWriter writer)
Упорядочьте дерево контента, базированное в jaxbElement в a
XMLEventWriter. |
void |
marshal(Object jaxbElement, XMLStreamWriter writer)
Упорядочьте дерево контента, базированное в jaxbElement в a
XMLStreamWriter. |
<A extends XmlAdapter> |
setAdapter(Class<A> type, A adapter)
Связывает сконфигурированный экземпляр
XmlAdapter с этим marshaller. |
void |
setAdapter(XmlAdapter adapter)
Связывает сконфигурированный экземпляр
XmlAdapter с этим marshaller. |
void |
setAttachmentMarshaller(AttachmentMarshaller am)
Свяжите контекст, который позволяет двоичным данным в пределах XML-документа быть переданными как двоичный файл XML оптимизированное присоединение.
|
void |
setEventHandler(ValidationEventHandler handler)
Позвольте приложению регистрировать обработчик событий проверки допустимости.
|
void |
setListener(Marshaller.Listener listener)
Регистр упорядочивает обратный вызов события
Marshaller.Listener с этим Marshaller. |
void |
setProperty(String name, Object value)
Установите определенное свойство в базовой реализации Marshaller.
|
void |
setSchema(Schema schema)
Определите JAXP 1.3
Schema объект, который должен использоваться, чтобы проверить последующий, упорядочивает операции против. |
static final String JAXB_ENCODING
static final String JAXB_FORMATTED_OUTPUT
static final String JAXB_SCHEMA_LOCATION
static final String JAXB_NO_NAMESPACE_SCHEMA_LOCATION
static final String JAXB_FRAGMENT
void marshal(Object jaxbElement, Result result) throws JAXBException
Все Провайдеры JAXB должны, по крайней мере, поддерживать DOMResult, SAXResult, и StreamResult. Это может поддерживать другие производные классы Result также.
jaxbElement - Корень дерева контента, которое будет упорядочено.result - XML будет отправлен этому РезультатуJAXBException - Если какая-либо неожиданная проблема происходит во время маршалинга.MarshalException - Если ValidationEventHandler возвращает false от его метода handleEvent, или Marshaller неспособен упорядочить obj (или любой объект, достижимый от obj). См. Маршалинг элемента JAXB.IllegalArgumentException - Если какой-либо из параметров метода является нулемvoid marshal(Object jaxbElement, OutputStream os) throws JAXBException
jaxbElement - Корень дерева контента, которое будет упорядочено.os - XML будет добавлен к этому потоку.JAXBException - Если какая-либо неожиданная проблема происходит во время маршалинга.MarshalException - Если ValidationEventHandler возвращает false от его метода handleEvent, или Marshaller неспособен упорядочить obj (или любой объект, достижимый от obj). См. Маршалинг элемента JAXB.IllegalArgumentException - Если какой-либо из параметров метода является нулемvoid marshal(Object jaxbElement, File output) throws JAXBException
jaxbElement - Корень дерева контента, которое будет упорядочено.output - Файл, который будет записан. Если этот файл уже будет существовать, то он будет перезаписан.JAXBException - Если какая-либо неожиданная проблема происходит во время маршалинга.MarshalException - Если ValidationEventHandler возвращает false от его метода handleEvent, или Marshaller неспособен упорядочить obj (или любой объект, достижимый от obj). См. Маршалинг элемента JAXB.IllegalArgumentException - Если какой-либо из параметров метода является нулемvoid marshal(Object jaxbElement, Writer writer) throws JAXBException
jaxbElement - Корень дерева контента, которое будет упорядочено.writer - XML будет отправлен этому писателю.JAXBException - Если какая-либо неожиданная проблема происходит во время маршалинга.MarshalException - Если ValidationEventHandler возвращает false от его метода handleEvent, или Marshaller неспособен упорядочить obj (или любой объект, достижимый от obj). См. Маршалинг элемента JAXB.IllegalArgumentException - Если какой-либо из параметров метода является нулемvoid marshal(Object jaxbElement, ContentHandler handler) throws JAXBException
jaxbElement - Корень дерева контента, которое будет упорядочено.handler - XML будет отправлен этому обработчику как события SAX2.JAXBException - Если какая-либо неожиданная проблема происходит во время маршалинга.MarshalException - Если ValidationEventHandler возвращает false от его метода handleEvent, или Marshaller неспособен упорядочить obj (или любой объект, достижимый от obj). См. Маршалинг элемента JAXB.IllegalArgumentException - Если какой-либо из параметров метода является нулемvoid marshal(Object jaxbElement, Node node) throws JAXBException
jaxbElement - Дерево контента, которое будет упорядочено.node - Узлы ДОМА будут добавлены как дочерние элементы этого узла. Этим параметром должен быть Узел, который принимает дочерние элементы (Document, DocumentFragment, или Element)JAXBException - Если какая-либо неожиданная проблема происходит во время маршалинга.MarshalException - Если ValidationEventHandler возвращает false от его метода handleEvent, или Marshaller неспособен упорядочить jaxbElement (или любой объект, достижимый от jaxbElement). См. Маршалинг элемента JAXB.IllegalArgumentException - Если какой-либо из параметров метода является нулемvoid marshal(Object jaxbElement, XMLStreamWriter writer) throws JAXBException
XMLStreamWriter.jaxbElement - Дерево контента, которое будет упорядочено.writer - XML будет отправлен этому писателю.JAXBException - Если какая-либо неожиданная проблема происходит во время маршалинга.MarshalException - Если ValidationEventHandler возвращает false от его метода handleEvent, или Marshaller неспособен упорядочить obj (или любой объект, достижимый от obj). См. Маршалинг элемента JAXB.IllegalArgumentException - Если какой-либо из параметров метода является нулемvoid marshal(Object jaxbElement, XMLEventWriter writer) throws JAXBException
XMLEventWriter.jaxbElement - Дерево контента базировалось в jaxbElement, который будет упорядочен.writer - XML будет отправлен этому писателю.JAXBException - Если какая-либо неожиданная проблема происходит во время маршалинга.MarshalException - Если ValidationEventHandler возвращает false от его метода handleEvent, или Marshaller неспособен упорядочить obj (или любой объект, достижимый от obj). См. Маршалинг элемента JAXB.IllegalArgumentException - Если какой-либо из параметров метода является нулемNode getNode(Object contentTree) throws JAXBException
marshal(Object, org.w3c.dom.Node) вызвать глубокую копию дерева контента к представлению ДОМА.contentTree - Представление Java JAXB контента XMLUnsupportedOperationException - Если реализация провайдера JAXB не поддерживает представление ДОМА дерева контентаIllegalArgumentException - Если какой-либо из параметров метода является нулемJAXBException - Если какая-либо неожиданная проблема происходитvoid setProperty(String name, Object value) throws PropertyException
name - имя свойства, которое будет установлено. Это значение может или быть определено, используя одно из постоянных полей или пользователя предоставленная строка.value - значение свойства, которое будет установленоPropertyException - когда есть ошибка, обрабатывая данное свойство или значениеIllegalArgumentException - Если параметр имени является нулемObject getProperty(String name) throws PropertyException
name - имя свойства, чтобы получитьPropertyException - когда есть ошибка, получая данное свойство или имя свойства значенияIllegalArgumentException - Если параметр имени является нулемvoid setEventHandler(ValidationEventHandler handler) throws JAXBException
Обработчик событий проверки допустимости вызовет Провайдер JAXB, если с какими-либо ошибками проверки допустимости встретятся во время звонков в какой-либо упорядочивать API. Если клиентское приложение не зарегистрирует обработчик событий проверки допустимости прежде, чем вызвать один из упорядочивать методов, то события проверки допустимости будут обработаны обработчиком стандартного события, который завершит упорядочивать работу после первой ошибки, или с фатальной ошибкой встречаются.
Вызов этого метода с нулевым параметром заставит Marshaller возвращаться назад к обработчику стандартного события значения по умолчанию.
handler - обработчик событий проверки допустимостиJAXBException - если с ошибкой встретились, устанавливая обработчик событийValidationEventHandler getEventHandler() throws JAXBException
JAXBException - если с ошибкой встретились, получая текущий обработчик событийvoid setAdapter(XmlAdapter adapter)
XmlAdapter с этим marshaller. Это - метод удобства, который вызывает setAdapter(adapter.getClass(),adapter);.
IllegalArgumentException - если параметр адаптера является нулем.UnsupportedOperationException - если вызвано agains JAXB 1.0 реализации.setAdapter(Class,XmlAdapter)<A extends XmlAdapter> void setAdapter(Class<A> type, A adapter)
XmlAdapter с этим marshaller. Каждый marshaller внутренне поддерживает a Map<Class,XmlAdapter>, который это использует для того, чтобы упорядочить классы, поля/методы которых аннотируются XmlJavaTypeAdapter.
Этот метод позволяет приложениям использовать сконфигурированный экземпляр XmlAdapter. Когда пример адаптера не будет приведен, marshaller создаст один, вызывая его конструктора по умолчанию.
type - Тип адаптера. Указанный экземпляр будет использоваться когда XmlJavaTypeAdapter.value() обращается к этому типу.adapter - Экземпляр адаптера, который будет использоваться. Если ноль, это незарегистрирует текущий набор адаптера для этого типа.IllegalArgumentException - если параметр типа является нулем.UnsupportedOperationException - если вызвано agains JAXB 1.0 реализации.<A extends XmlAdapter> A getAdapter(Class<A> type)
setAdapter(javax.xml.bind.annotation.adapters.XmlAdapter) метод.IllegalArgumentException - если параметр типа является нулем.UnsupportedOperationException - если вызвано agains JAXB 1.0 реализации.void setAttachmentMarshaller(AttachmentMarshaller am)
Свяжите контекст, который позволяет двоичным данным в пределах XML-документа быть переданными как двоичный файл XML оптимизированное присоединение. На присоединение ссылаются от модели контента XML-документа URI идентификатора контента (уголовный розыск) ссылки, сохраненные в пределах xml документа.
IllegalStateException - если попытка одновременно вызвать этот метод во время упорядочивать работы.AttachmentMarshaller getAttachmentMarshaller()
void setSchema(Schema schema)
Schema объект, который должен использоваться, чтобы проверить последующий, упорядочивает операции против. Передача нуля в этот метод отключит проверку допустимости. Этот метод позволяет вызывающей стороне проверять упорядоченного XML, поскольку это упорядочивается.
Первоначально это свойство устанавливается в null.
schema - Объект схемы проверить упорядочивает операции против или нуль, чтобы отключить проверку допустимостиUnsupportedOperationException - мог быть брошен, если этот метод вызывается на Marshaller, создаваемый из JAXBContext, ссылающегося на JAXB 1.0 отображенных классаSchema getSchema()
Schema объект, используемый, чтобы выполнить, упорядочивает разовую проверку допустимости. Если не будет никакого набора Схемы на marshaller, то этот метод возвратит нуль, указывающий, которые упорядочивают разовую проверку допустимости, не будет выполняться.UnsupportedOperationException - мог быть брошен, если этот метод вызывается на Marshaller, создаваемый из JAXBContext, ссылающегося на JAXB 1.0 отображенных классаvoid setListener(Marshaller.Listener listener)
Регистр упорядочивает обратный вызов события Marshaller.Listener с этим Marshaller.
Есть только один Слушатель на Marshaller. Установка Слушателя заменяет предыдущего Слушателя набора. Можно незарегистрировать текущего Слушателя, устанавливая слушателя null.
listener - экземпляр class, который реализует Marshaller.ListenerMarshaller.Listener getListener()
Возвратиться Marshaller.Listener зарегистрированный в этом Marshaller.
Marshaller.Listener или null если никакой Слушатель не регистрируется в этом Marshaller.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
ЧЕРНОВАЯ земля-b92