public interface Unmarshaller
Unmarshaller
クラスは、XML データを新しく作成された Java コンテンツツリーに逆直列化するプロセスを管理し、オプションで、XML データがマーシャリングされていないときに検証します。これは、多くの異なる入力の種類に対して非マーシャリングメソッドのオーバーロードを提供します。ファイルからのマーシャリング解除:
JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); Object o = u.unmarshal( new File( "nosferatu.xml" ) );
InputStream からのマーシャリング解除:
InputStream is = new FileInputStream( "nosferatu.xml" ); JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); Object o = u.unmarshal( is );
URL からのマーシャリング解除:
JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); URL url = new URL( "http://beaker.east/nosferatu.xml" ); Object o = u.unmarshal( url );
javax.xml.transform.stream.StreamSource
を使用した StringBuffer からのアンマーシャリング:
JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); StringBuffer xmlStr = new StringBuffer( "<?xml version="1.0"?>..." ); Object o = u.unmarshal( new StreamSource( new StringReader( xmlStr.toString() ) ) );
org.w3c.dom.Node
からのアンマーシャリング:
JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File( "nosferatu.xml")); Object o = u.unmarshal( doc );
クライアント指定の検証 SAX2.0 パーサーを使用した javax.xml.transform.sax.SAXSource
からのアンマーシャリング:
// configure a validating SAX2.0 parser (Xerces2) static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; static final String JAXP_SCHEMA_LOCATION = "http://java.sun.com/xml/jaxp/properties/schemaSource"; static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema"; System.setProperty( "javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl" ); SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware(true); spf.setValidating(true); SAXParser saxParser = spf.newSAXParser(); try { saxParser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); saxParser.setProperty(JAXP_SCHEMA_LOCATION, "http://...."); } catch (SAXNotRecognizedException x) { // exception handling omitted } XMLReader xmlReader = saxParser.getXMLReader(); SAXSource source = new SAXSource( xmlReader, new InputSource( "http://..." ) ); // Setup Jakarta XML Binding to unmarshal JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); ValidationEventCollector vec = new ValidationEventCollector(); u.setEventHandler( vec ); // turn off the Jakarta XML Binding provider's default validation mechanism to // avoid duplicate validation u.setValidating( false ) // unmarshal Object o = u.unmarshal( source ); // check for events if( vec.hasEvents() ) { // iterate over events }
StAX XMLStreamReader からのマーシャリング解除:
JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); javax.xml.stream.XMLStreamReader xmlStreamReader = javax.xml.stream.XMLInputFactory().newInstance().createXMLStreamReader( ... ); Object o = u.unmarshal( xmlStreamReader );
StAX XMLEventReader からのマーシャリング解除:
JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); javax.xml.stream.XMLEventReader xmlEventReader = javax.xml.stream.XMLInputFactory().newInstance().createXMLEventReader( ... ); Object o = u.unmarshal( xmlEventReader );
アンマーシャリングは、XML ドキュメント全体または XML ドキュメントのサブツリーを表す XML データを逆直列化できます。通常は、グローバルに宣言されているアンマーシャルルート要素で説明されているアンマーシャリングメソッドを使用すれば十分です。これらのアンマーシャリングメソッドは、JAXBContext
のグローバル XML 要素宣言と型定義の Jakarta XML Binding マップクラスへのマッピングを利用して、XML データのルート要素のアンマーシャリングを開始します。JAXBContext
のマッピングが XML データのルート要素をアンマーシャリングするのに十分でない場合は、アプリケーションで declaredType によるアンマーシャリングメソッドを使用してアンマーシャリングプロセスを支援できます。これらのメソッドは、ルート要素がスキーマ内のローカル要素宣言に対応する XML データをアンマーシャリングする場合に役立ちます。
アンマーシャルメソッドが null を返すことはありません。アンマーシャルプロセスが XML コンテンツのルートを Jakarta XML Binding マップオブジェクトにアンマーシャリングできない場合、JAXBException をスローして処理を終了する致命的なエラーが報告されます。
グローバルに宣言されているルート要素をアンマーシャリングします
declaredType
パラメーターを持たないアンマーシャルメソッドは、JAXBContext
を使用して XML データのルート要素をアンマーシャルします。JAXBContext
インスタンスは、このUnmarshaller
を作成するために使用されたインスタンスです。JAXBContext
インスタンスは、グローバルに宣言された XML 要素と型定義名から Jakarta XML Binding マップクラスへのマッピングを維持します。アンマーシャルメソッドは、JAXBContext
にルート要素の XML 名および / または@xsi:type
から Jakarta XML Binding マップクラスへのマッピングがあるかどうかを確認します。マッピングがある場合は、適切な Jakarta XML Binding マップクラスを使用して XML データをアンマーシャルします。ルート要素名が不明で、ルート要素に@xsi:type
がある場合、その Jakarta XML Binding マップクラスをJAXBElement
の値として使用して XML データがアンマーシャルされることに注意してください。JAXBContext
オブジェクトにルート要素の名前またはその@xsi:type
のマッピングがない場合 (存在する場合)、アンマーシャル操作はUnmarshalException
をスローして直ちに中止されます。この例外シナリオは、次のサブセクションで説明する declaredType によるアンマーシャルメソッドを使用することで回避できます。
declaredType
パラメーターを使用した unmarshal メソッドを使用すると、JAXBContext
にルート要素の XML 名のマッピングがない場合でも、アプリケーションで XML データのルート要素を逆直列化できます。unmarshaller は、declaredType
パラメーターとして指定されたアプリケーション提供のマッピングを使用してルート要素をアンマーシャリングします。ルート要素の要素名がJAXBContext
によってマップされている場合でも、これらの非マーシャリングメソッドを使用すると、declaredType
パラメーターがそのマッピングをオーバーライドしてルート要素を逆直列化することに注意してください。さらに、XML データのルート要素にxsi:type
属性があり、その属性の値がJAXBContext
によって Jakarta XML Binding マップクラスにマップされた型定義を参照している場合、ルート要素のxsi:type
属性がアンマーシャルメソッドのdeclaredType
パラメーターよりも優先されます。これらのメソッドは常にJAXBElement<declaredType>
インスタンスを返します。次の表は、返された JAXBElement インスタンスのプロパティがどのように設定されるかを示しています。
宣言された型によるアンマーシャルが JAXBElement を返しました JAXBElement プロパティ 値 名前 xml element name
value instanceof declaredType
declaredType アンマーシャルメソッド declaredType
パラメーター範囲 null
(実際の範囲は不明)
以下は declaredType 方式によるアンマーシャルの例です。
declaredType による org.w3c.dom.Node
からのアンマーシャル:
Schema fragment for example <xs:schema> <xs:complexType name="FooType">...<\xs:complexType> <!-- global element declaration "PurchaseOrder" --> <xs:element name="PurchaseOrder"> <xs:complexType> <xs:sequence> <!-- local element declaration "foo" --> <xs:element name="foo" type="FooType"/> ... </xs:sequence> </xs:complexType> </xs:element> </xs:schema> JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File( "nosferatu.xml")); Element fooSubtree = ...; // traverse DOM till reach xml element foo, constrained by a // local element declaration in schema. // FooType is the Jakarta XML Binding mapping of the type of local element declaration foo. JAXBElement<FooType> foo = u.unmarshal( fooSubtree, FooType.class);
SAX2.0 準拠のパーサーのサポート
クライアントアプリケーションには、SAX2.0 準拠のパーサーを選択する機能があります。SAX パーサーが選択されていない場合は、Jakarta XML Binding Provider のデフォルトのパーサーが使用されます。Jakarta XML Binding Provider のデフォルトのパーサーは SAX2.0 に準拠している必要はありませんが、すべてのプロバイダーは、クライアントアプリケーションが独自の SAX2.0 パーサーを指定できるようにする必要があります。一部のプロバイダーは、クライアントアプリケーションがスキーマのコンパイル時に SAX2.0 パーサーを指定することを要求する場合があります。詳細については、unmarshal(Source)
を参照してください。
検証と整形式
クライアントアプリケーションは、
setSchema(javax.xml.validation.Schema)
API を介して JAXP 1.3 検証メカニズムを有効または無効にできます。洗練されたクライアントは、独自の検証 SAX 2.0 準拠パーサーを指定し、unmarshal(Source)
API を使用して JAXP1.3 検証メカニズムをバイパスできます。無効な XML コンテンツのアンマーシャリングは Jakarta XML Binding で定義されているため、Unmarshaller のデフォルトの検証イベントハンドラーは、JAXB 1.0 よりも寛大になりました。JAXB 1.0 バインディングコンパイラーによって生成されたスキーマ派生コードが
JAXBContext
に登録されている場合、デフォルトのアンマーシャル検証ハンドラーはDefaultValidationEventHandler
であり、致命的なエラーまたはエラーが発生した後、マーシャル操作を終了します。Jakarta XML Binding クライアントアプリケーションの場合、明示的に定義されたデフォルトの検証ハンドラーはなく、デフォルトのイベント処理は、致命的なエラーが発生した後にのみアンマーシャル操作を終了します。
現在、Unmarshaller のすべての Jakarta XML Binding Providers でサポートする必要のあるプロパティはありません。ただし、プロバイダーによっては、プロバイダー固有の独自のプロパティセットをサポートしている場合があります。
Unmarshaller
は、マーシャリング解除プロセスの重要なポイントでアプリケーション固有の処理を可能にする 2 つのスタイルのコールバックメカニズムを提供します。「クラス定義」イベントコールバックでは、Jakarta XML Binding マップクラスに配置されたアプリケーション固有のコードがマーシャリング解除中にトリガーされます。「外部リスナー」は、型イベントコールバックではなく、1 つのコールバックメソッドで非マーシャリングイベントの集中処理を可能にします。「クラス定義」イベントコールバックメソッドを使用すると、Jakarta XML Binding にマップされたクラスは、次のメソッドシグネチャーでメソッドを定義することにより、独自の特定のコールバックメソッドを指定できます。
クラス定義のコールバックメソッドは、コールバックメソッドが非公開メソッドやクラスのフィールドへのアクセスを必要とする場合に使用する必要があります。// This method is called immediately after the object is created and before the unmarshalling of this // object begins. The callback provides an opportunity to initialize JavaBean properties prior to unmarshalling. void beforeUnmarshal(Unmarshaller, Object parent); //This method is called after all the properties (except IDREF) are unmarshalled for this object, //but before this object is set to the parent object. void afterUnmarshal(Unmarshaller, Object parent);外部リスナーコールバックメカニズムにより、
Unmarshaller.Listener
インスタンスをsetListener(Listener)
に登録できます。外部リスナーはすべてのコールバックイベントを受信するため、クラス定義のコールバックメソッドよりも集中処理が可能になります。外部リスナーは、非マーシャリングプロセスが Jakarta XML Binding 要素または Jakarta XML Binding マップクラスにマーシャリングしているときにイベントを受信します。「クラス定義」と外部リスナーイベントのコールバックメソッドは互いに独立しており、どちらも 1 つのイベントに対して呼び出すことができます。両方のリスナーコールバックメソッドが存在する場合の呼び出し順序は、
Unmarshaller.Listener.beforeUnmarshal(Object, Object)
とUnmarshaller.Listener.afterUnmarshal(Object, Object)
で定義されています。例外をスローするイベントコールバックメソッドは、現在のアンマーシャリングプロセスを終了します。
JAXBContext
, Marshaller
, Validator
修飾子と型 | インターフェースと説明 |
---|---|
static class | Unmarshaller.Listener このクラスの実装のインスタンスを Unmarshaller に登録して、非マーシャリングイベントを外部でリッスンします。 |
修飾子と型 | メソッドと説明 |
---|---|
<A extends XmlAdapter> | getAdapter(ClassSE<A> type) 指定された型に関連付けられたアダプターを取得します。 |
AttachmentUnmarshaller | getAttachmentUnmarshaller() |
ValidationEventHandler | getEventHandler() 現在のイベントハンドラー、または設定されていない場合はデフォルトのイベントハンドラーを返します。 |
Unmarshaller.Listener | getListener() この Unmarshaller に登録されている Unmarshaller.Listener を返します。 |
ObjectSE | getProperty(StringSE name) Unmarshaller の基礎となる実装で特定のプロパティを取得します。 |
SchemaSE | getSchema() 非マーシャル時間検証の実行に使用されている JAXP 1.3 Schema SE オブジェクトを取得します。 |
UnmarshallerHandler | getUnmarshallerHandler() XML パイプラインのコンポーネントとして使用できる unmarshaller ハンドラーオブジェクトを取得します。 |
boolean | isValidating() 使用すべきではありません。 JAXB2.0 以降、 getSchema() を参照してください |
<A extends XmlAdapter> | setAdapter(ClassSE<A> type, A adapter) XmlAdapter の構成済みインスタンスをこのアンマーシャラーに関連付けます。 |
void | setAdapter(XmlAdapter adapter) XmlAdapter の構成済みインスタンスをこのアンマーシャラーに関連付けます。 |
void | setAttachmentUnmarshaller(AttachmentUnmarshaller au) cid の content-idURI を解決するコンテキストを、添付ファイルとして渡されるバイナリデータに関連付けます。 |
void | setEventHandler(ValidationEventHandler handler) アプリケーションが ValidationEventHandler を登録できるようにします。 |
void | setListener(Unmarshaller.Listener listener) アンマーシャルイベントコールバック Unmarshaller.Listener をこの Unmarshaller に登録します。 |
void | setProperty(StringSE name, ObjectSE value) Unmarshaller の基礎となる実装で特定のプロパティを設定します。 |
void | setSchema(SchemaSE schema) 後続の非マーシャリング操作を検証するために使用する必要がある JAXP 1.3 Schema SE オブジェクトを指定します。 |
void | setValidating(boolean validating) 使用すべきではありません。 JAXB2.0 以降、 setSchema(javax.xml.validation.Schema) を参照してください |
ObjectSE | unmarshal(FileSE f) 指定されたファイルから XML データを非整列化し、結果のコンテンツツリーを返します。 |
ObjectSE | unmarshal(InputSourceSE source) 指定された SAX InputSource から XML データをアンマーシャリングし、結果のコンテンツツリーを返します。 |
ObjectSE | unmarshal(InputStreamSE is) 指定された InputStream から XML データをマーシャリング解除し、結果のコンテンツツリーを返します。 |
ObjectSE | unmarshal(NodeSE node) 指定された DOM ツリーからグローバル XML データを非整列化し、結果のコンテンツツリーを返します。 |
<T> JAXBElement<T> | unmarshal(NodeSE node, ClassSE<T> declaredType) Jakarta XML Binding によってマップされた declaredType によって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。 |
ObjectSE | unmarshal(ReaderSE reader) 指定されたリーダーから XML データをアンマーシャリングし、結果のコンテンツツリーを返します。 |
ObjectSE | unmarshal(SourceSE source) 指定された XML ソースから XML データを非整列化し、結果のコンテンツツリーを返します。 |
<T> JAXBElement<T> | unmarshal(SourceSE source, ClassSE<T> declaredType) 指定された XML ソースから declaredType によって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。 |
ObjectSE | unmarshal(URLSE url) 指定された URL から XML データをアンマーシャリングし、結果のコンテンツツリーを返します。 |
ObjectSE | unmarshal(XMLEventReaderSE reader) 指定されたプルパーサーから XML データを非整列化し、結果のコンテンツツリーを返します。 |
<T> JAXBElement<T> | unmarshal(XMLEventReaderSE reader, ClassSE<T> declaredType) ルート要素を Jakarta XML Binding にマップされた declaredType にアンマーシャルし、結果のコンテンツツリーを返します。 |
ObjectSE | unmarshal(XMLStreamReaderSE reader) 指定されたプルパーサーから XML データを非整列化し、結果のコンテンツツリーを返します。 |
<T> JAXBElement<T> | unmarshal(XMLStreamReaderSE reader, ClassSE<T> declaredType) ルート要素を Jakarta XML Binding にマップされた declaredType にアンマーシャルし、結果のコンテンツツリーを返します。 |
ObjectSE unmarshal(FileSE f) throws JAXBException
グローバルルート要素のマーシャリング解除を実装します。
f
- XML データをアンマーシャリングするファイル JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- ファイルパラメーターが null の場合 ObjectSE unmarshal(InputStreamSE is) throws JAXBException
グローバルルート要素のマーシャリング解除を実装します。
is
- から XML データをアンマーシャリングする InputStreamJAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- InputStream パラメーターが NULL の場合 ObjectSE unmarshal(ReaderSE reader) throws JAXBException
グローバルルート要素のマーシャリング解除を実装します。
reader
- から XML データをアンマーシャリングするリーダー JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- InputStream パラメーターが NULL の場合 ObjectSE unmarshal(URLSE url) throws JAXBException
グローバルルート要素のマーシャリング解除を実装します。
url
- から XML データをアンマーシャリングするための URLJAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- URL パラメーターが null の場合 ObjectSE unmarshal(InputSourceSE source) throws JAXBException
グローバルルート要素のマーシャリング解除を実装します。
source
- XML データをアンマーシャリングするための入力ソース JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- InputSource パラメーターが NULL の場合 ObjectSE unmarshal(NodeSE node) throws JAXBException
グローバルルート要素のマーシャリング解除を実装します。
node
- XML データのマーシャリングを解除するドキュメント / 要素。呼び出し元は、少なくとも Document と Element をサポートしている必要があります。JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- Node パラメーターが null の場合 unmarshal(org.w3c.dom.Node, Class)
<T> JAXBElement<T> unmarshal(NodeSE node, ClassSE<T> declaredType) throws JAXBException
declaredType
によって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。宣言された型によるアンマーシャルを実装します
node
- XML データのマーシャリングを解除するドキュメント / 要素。呼び出し元は、少なくとも Document と Element をサポートしている必要があります。declaredType
- node
の XML データを保持するための適切な Jakarta XML Binding マップクラス。node
の JAXBElement 表現 JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- パラメーターが null の場合 ObjectSE unmarshal(SourceSE source) throws JAXBException
グローバルルート要素のマーシャリング解除を実装します。
クライアントアプリケーションは、Jakarta XML Binding プロバイダーで提供されるデフォルトのパーサーメカニズムを使用しないことを選択できます。SAX 2.0 準拠のパーサーは、Jakarta XML Binding プロバイダーのデフォルトメカニズムの代わりに使用できます。これを行うには、クライアントアプリケーションは、SAX 2.0 パーサープロバイダーによって実装された XMLReader
を含む SAXSource
を適切に構成する必要があります。XMLReader
に org.xml.sax.ErrorHandler
が登録されている場合は、Jakarta XML Binding Provider に置き換えられ、Jakarta XML Binding の ValidationEventHandler
メカニズムを介して検証エラーを報告できるようになります。SAXSource
に XMLReader
が含まれていない場合は、Jakarta XML Binding プロバイダーのデフォルトのパーサーメカニズムが使用されます。
このパーサー置換メカニズムは、Jakarta XML Binding プロバイダーの非マーシャル時間検証エンジンを置換するためにも使用できます。クライアントアプリケーションは、検証を実行するために SAX 2.0 準拠のパーサーを適切に構成する必要があります(上記の例を参照)。アンマーシャリング操作中にパーサーが検出した SAXParserExceptions
は、Jakarta XML Binding プロバイダーによって処理され、Jakarta XML Binding ValidationEvent
オブジェクトに変換され、Unmarshaller
に登録された ValidationEventHandler
を介してクライアントに報告されます。 注: アンマーシャリングの代わりに検証 SAX 2.0 パーサーを指定しても、オンデマンド検証を実行するために Jakarta XML Binding プロバイダーが使用する検証エンジンが必ずしも置き換えられるわけではありません。
クライアントアプリケーションがアンマーシャル中に使用される代替パーサーメカニズムを指定する唯一の方法は、unmarshal(SAXSource)
API を使用することです。アンマーシャルメソッドの他のすべての形式(ファイル、URL、ノードなど)は、Jakarta XML Binding プロバイダーのデフォルトのパーサーおよびバリデーターメカニズムを使用します。
source
- から XML データをアンマーシャリングする XML ソース (プロバイダーは、SAXSource、DOMSource、StreamSource をサポートするためにのみ必要です。)JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- Source パラメーターが null の場合 unmarshal(javax.xml.transform.Source, Class)
<T> JAXBElement<T> unmarshal(SourceSE source, ClassSE<T> declaredType) throws JAXBException
declaredType
によって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。宣言された型によるアンマーシャルを実装します
source
- から XML データをアンマーシャリングする XML ソース (プロバイダーは、SAXSource、DOMSource、StreamSource をサポートするためにのみ必要です。)declaredType
- source
の xml ルート要素を保持するための適切な Jakarta XML Binding マップクラス JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- パラメーターが null の場合 ObjectSE unmarshal(XMLStreamReaderSE reader) throws JAXBException
グローバルルート要素のマーシャリング解除を実装します。
このメソッドは、パーサーが START_DOCUMENT または START_ELEMENT イベントにあることを前提としています。アンマーシャリングは、この開始イベントから対応する終了イベントまで実行されます。このメソッドが正常に返されると、reader
は終了イベントの直後にトークンを指します。
reader
- 読み取るパーサー。JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- reader
パラメーターが NULL の場合 IllegalStateExceptionSE
- reader
が START_DOCUMENT または START_ELEMENT イベントを指していない場合。unmarshal(javax.xml.stream.XMLStreamReader, Class)
<T> JAXBElement<T> unmarshal(XMLStreamReaderSE reader, ClassSE<T> declaredType) throws JAXBException
declaredType
にアンマーシャルし、結果のコンテンツツリーを返します。このメソッドは、declaredType によるアンマーシャルを実装します。
このメソッドは、パーサーが START_DOCUMENT または START_ELEMENT イベントにあることを前提としています。アンマーシャリングは、この開始イベントから対応する終了イベントまで実行されます。このメソッドが正常に返されると、reader
は終了イベントの直後にトークンを指します。
reader
- 読み取るパーサー。declaredType
- reader
の START_ELEMENTXML データを保持するための適切な Jakarta XML Binding マップクラス。JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- パラメーターが null の場合 ObjectSE unmarshal(XMLEventReaderSE reader) throws JAXBException
このメソッドはアンマーシャルグローバルルートメソッドです。
このメソッドは、パーサーが START_DOCUMENT または START_ELEMENT イベントにあることを前提としています。アンマーシャリングは、この開始イベントから対応する終了イベントまで実行されます。このメソッドが正常に返されると、reader
は終了イベントの直後にトークンを指します。
reader
- 読み取るパーサー。JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- reader
パラメーターが NULL の場合 IllegalStateExceptionSE
- reader
が START_DOCUMENT または START_ELEMENT イベントを指していない場合。unmarshal(javax.xml.stream.XMLEventReader, Class)
<T> JAXBElement<T> unmarshal(XMLEventReaderSE reader, ClassSE<T> declaredType) throws JAXBException
declaredType
にアンマーシャルし、結果のコンテンツツリーを返します。このメソッドは、declaredType によるアンマーシャルを実装します。
このメソッドは、パーサーが START_DOCUMENT または START_ELEMENT イベントにあることを前提としています。アンマーシャリングは、この開始イベントから対応する終了イベントまで実行されます。このメソッドが正常に返されると、reader
は終了イベントの直後にトークンを指します。
reader
- 読み取るパーサー。declaredType
- reader
の START_ELEMENTXML データを保持するための適切な Jakarta XML Binding マップクラス。JAXBException
- マーシャリング解除中に予期しないエラーが発生した場合 UnmarshalException
- ValidationEventHandler
が handleEvent
メソッドから false を返す場合、または Unmarshaller
が XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してください IllegalArgumentExceptionSE
- パラメーターが null の場合 UnmarshallerHandler getUnmarshallerHandler()
Jakarta XML Binding Provider は、このメソッドの複数の呼び出しに対して同じハンドラーオブジェクトを返すことができます。つまり、このメソッドは必ずしも UnmarshallerHandler
の新しいインスタンスを作成するわけではありません。アプリケーションが複数の UnmarshallerHandler
を使用する必要がある場合は、複数の Unmarshaller
を作成する必要があります。
UnmarshallerHandler
void setValidating(boolean validating) throws JAXBException
setSchema(javax.xml.validation.Schema)
を参照してください。Unmarshaller
のデフォルトの検証メカニズムが非マーシャリング操作中に検証する必要があるかどうかを指定します。デフォルトでは、Unmarshaller
は検証されません。このメソッドは、非マーシャリングメソッドの 1 つを呼び出す前または後にのみ呼び出すことができます。
このメソッドは、Jakarta XML Binding Provider のデフォルトの非マーシャル時間検証メカニズムのみを制御します。独自の検証 SAX 2.0 準拠パーサーを指定するクライアントには影響しません。独自の非マーシャル時間検証メカニズムを指定するクライアントは、「二重検証」を回避するために、この API を介して Jakarta XML Binding Provider のデフォルト検証メカニズムをオフにすることをお勧めします。
このメソッドは Jakarta XML Binding で非推奨になりました。新しい setSchema(javax.xml.validation.Schema)
API を使用してください。
validating
- Unmarshaller がアンマーシャル中に検証する必要がある場合は true、それ以外の場合は falseJAXBException
- マーシャリング解除時に検証を有効または無効にしているときにエラーが発生した場合 UnsupportedOperationExceptionSE
- このメソッドが、Jakarta XML Binding マップクラスを参照する JAXBContext から作成された Unmarshaller で呼び出された場合にスローされる可能性があります boolean isValidating() throws JAXBException
getSchema()
を参照してください。Unmarshaller
が構成されているかどうかを示します。この API は、Jakarta XML Binding Provider のデフォルトの非マーシャル時間検証メカニズムの状態を返します。
このメソッドは Jakarta XML Binding で非推奨になりました。新しい getSchema()
API を使用してください。
JAXBException
- 検証フラグの取得中にエラーが発生した場合 UnsupportedOperationExceptionSE
- このメソッドが、Jakarta XML Binding マップクラスを参照する JAXBContext から作成された Unmarshaller で呼び出された場合にスローされる可能性があります void setEventHandler(ValidationEventHandler handler) throws JAXBException
ValidationEventHandler
を登録できるようにします。 いずれかの非マーシャリングメソッドの呼び出し中に検証エラーが発生した場合、ValidationEventHandler
は Jakarta XML Binding Provider によって呼び出されます。クライアントアプリケーションがアンマーシャルメソッドを呼び出す前に ValidationEventHandler
を登録しない場合、ValidationEvents
はデフォルトのイベントハンドラーによって処理され、最初のエラーまたは致命的なエラーが発生した後にアンマーシャル操作が終了します。
null パラメーターを指定してこのメソッドを呼び出すと、Unmarshaller はデフォルトのイベントハンドラーに戻ります。
handler
- 検証イベントハンドラー JAXBException
- イベントハンドラーの設定中にエラーが発生した場合 ValidationEventHandler getEventHandler() throws JAXBException
JAXBException
- 現在のイベントハンドラーの取得中にエラーが発生した場合 void setProperty(StringSE name, ObjectSE value) throws PropertyException
Unmarshaller
の基礎となる実装で特定のプロパティを設定します。このメソッドは、上記の標準 Jakarta XML Binding 定義プロパティの 1 つ、またはプロバイダー固有のプロパティを設定するためにのみ使用できます。未定義のプロパティを設定しようとすると、PropertyException がスローされます。サポートされているプロパティを参照してください。name
- 設定するプロパティの名前。この値は、定数フィールドの 1 つまたはユーザー指定の文字列を使用して指定できます。value
- 設定するプロパティの値 PropertyException
- 指定されたプロパティまたは値の処理中にエラーが発生した場合 IllegalArgumentExceptionSE
- name パラメーターが null の場合 ObjectSE getProperty(StringSE name) throws PropertyException
Unmarshaller
の基礎となる実装で特定のプロパティを取得します。このメソッドは、上記の標準 Jakarta XML Binding 定義プロパティの 1 つ、またはプロバイダー固有のプロパティを取得するためにのみ使用できます。未定義のプロパティを取得しようとすると、PropertyException がスローされます。サポートされているプロパティを参照してください。name
- 取得するプロパティの名前 PropertyException
- 指定されたプロパティまたは値のプロパティ名の取得中にエラーが発生した場合 IllegalArgumentExceptionSE
- name パラメーターが null の場合 void setSchema(SchemaSE schema)
Schema
SE オブジェクトを指定します。このメソッドに null を渡すと、検証が無効になります。 このメソッドは、非推奨の setValidating(boolean)
API を置き換えます。
最初、このプロパティは null
に設定されています。
schema
- アンマーシャリング操作を検証するスキーマオブジェクト、または検証を無効にする nullUnsupportedOperationExceptionSE
- このメソッドが、JAXB 1.0 マップクラスを参照する JAXBContext から作成された Unmarshaller で呼び出された場合にスローされる可能性があります SchemaSE getSchema()
Schema
SE オブジェクトを取得します。アンマーシャラーにスキーマが設定されていない場合、このメソッドは null を返し、アンマーシャル時間の検証が実行されないことを示します。 このメソッドは、非推奨の isValidating()
API の置換機能と、スキーマオブジェクトへのアクセスを提供します。Unmarshaller で検証が有効になっているかどうかを判断するには、戻り値の型の null をテストするだけです。
boolean isValidating = u.getSchema()!=null;
UnsupportedOperationExceptionSE
- このメソッドが、JAXB 1.0 マップクラスを参照する JAXBContext から作成された Unmarshaller で呼び出された場合にスローされる可能性があります void setAdapter(XmlAdapter adapter)
XmlAdapter
の構成済みインスタンスをこのアンマーシャラーに関連付けます。 これは、setAdapter(adapter.getClass(),adapter);
を呼び出す便利なメソッドです。
IllegalArgumentExceptionSE
- アダプターパラメーターが null の場合。UnsupportedOperationExceptionSE
- JAXB 1.0 実装に対して再度呼び出された場合。setAdapter(Class,XmlAdapter)
<A extends XmlAdapter> void setAdapter(ClassSE<A> type, A adapter)
XmlAdapter
の構成済みインスタンスをこのアンマーシャラーに関連付けます。 すべてのアンマーシャラーは、Map
SE <Class
SE、XmlAdapter
> を内部的に維持します。これは、フィールド / メソッドに XmlJavaTypeAdapter
アノテーションが付けられたアンマーシャリングクラスに使用されます。
この方法により、アプリケーションは XmlAdapter
の構成済みインスタンスを使用できます。アダプターのインスタンスが指定されていない場合、アンマーシャラーはデフォルトのコンストラクターを呼び出してアダプターを作成します。
type
- アダプターの型。指定されたインスタンスは、XmlJavaTypeAdapter.value()
がこの型を参照するときに使用されます。adapter
- 使用するアダプターのインスタンス。null の場合、この型に設定されている現在のアダプターの登録が解除されます。IllegalArgumentExceptionSE
- type パラメーターが null の場合。UnsupportedOperationExceptionSE
- JAXB 1.0 実装に対して再度呼び出された場合。<A extends XmlAdapter> A getAdapter(ClassSE<A> type)
setAdapter(jakarta.xml.bind.annotation.adapters.XmlAdapter)
メソッドの逆の操作です。IllegalArgumentExceptionSE
- type パラメーターが null の場合。UnsupportedOperationExceptionSE
- JAXB 1.0 実装に対して再度呼び出された場合。void setAttachmentUnmarshaller(AttachmentUnmarshaller au)
cid の content-idURI を解決するコンテキストを、添付ファイルとして渡されるバイナリデータに関連付けます。
unmarshaller が XOP 処理を実行している場合でも、setSchema(Schema)
を介して有効化されたアンマーシャル時間検証をサポートする必要があります。
IllegalStateExceptionSE
- アンマーシャリング操作中にこのメソッドを同時に呼び出そうとした場合。AttachmentUnmarshaller getAttachmentUnmarshaller()
void setListener(Unmarshaller.Listener listener)
アンマーシャルイベントコールバック Unmarshaller.Listener
をこの Unmarshaller
に登録します。
Unmarshaller ごとにリスナーは 1 つだけです。リスナーを設定すると、以前に設定したリスナーが置き換えられます。リスナーを null
に設定することにより、現在のリスナーの登録を解除できます。
listener
- この Unmarshaller
の非マーシャルイベントコールバックを提供します Unmarshaller.Listener getListener()
この Unmarshaller
に登録されている Unmarshaller.Listener
を返します。
Unmarshaller.Listener
または null
を登録します。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.