インターフェース Unmarshaller
- すべての既知の実装クラス:
AbstractUnmarshallerImpl
public interface UnmarshallerUnmarshallerクラスは、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 namevalue instanceof declaredTypedeclaredType アンマーシャルメソッド 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 検証メカニズムを有効または無効にできます。高度なクライアントは、独自の検証用 SAX 2.0 準拠パーサーを指定し、unmarshal(Source)API を使用して JAXP 検証メカニズムをバイパスできます。無効な 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)で定義されています。例外をスローするイベントコールバックメソッドは、現在のアンマーシャリングプロセスを終了します。
- 導入:
- 1.6、JAXB 1.0
- 作成者:
- Ryan Shoemaker, Sun Microsystems, Inc.
- Kohsuke Kawaguchi, Sun Microsystems, Inc.
- Joe Fialli, Sun Microsystems, Inc.
- 関連事項:
JAXBContext,Marshaller
ネストされたクラスの要約
ネストされたクラス 修飾子と型 インターフェース 説明 static classUnmarshaller.Listenerこのクラスの実装のインスタンスをUnmarshallerに登録して、非マーシャリングイベントを外部でリッスンします。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 <A extends XmlAdapter<?,?>>
AgetAdapter(ClassSE<A> type)指定された型に関連付けられたアダプターを取得します。AttachmentUnmarshallergetAttachmentUnmarshaller()ValidationEventHandlergetEventHandler()現在のイベントハンドラー、または設定されていない場合はデフォルトのイベントハンドラーを返します。Unmarshaller.ListenergetListener()このUnmarshallerに登録されているUnmarshaller.Listenerを返します。ObjectSEgetProperty(StringSE name)Unmarshallerの基礎となる実装で特定のプロパティを取得します。SchemaSEgetSchema()非整列化時の検証を実行するために使用されている JAXPSchemaSE オブジェクトを取得します。UnmarshallerHandlergetUnmarshallerHandler()XML パイプラインのコンポーネントとして使用できる unmarshaller ハンドラーオブジェクトを取得します。<A extends XmlAdapter<?,?>>
voidsetAdapter(A adapter)XmlAdapterの構成済みインスタンスをこのアンマーシャラーに関連付けます。<A extends XmlAdapter<?,?>>
voidsetAdapter(ClassSE<A> type, A adapter)XmlAdapterの構成済みインスタンスをこのアンマーシャラーに関連付けます。voidsetAttachmentUnmarshaller(AttachmentUnmarshaller au)cid の content-idURI を解決するコンテキストを、添付ファイルとして渡されるバイナリデータに関連付けます。voidsetEventHandler(ValidationEventHandler handler)アプリケーションがValidationEventHandlerを登録できるようにします。voidsetListener(Unmarshaller.Listener listener)アンマーシャルイベントコールバックUnmarshaller.ListenerをこのUnmarshallerに登録します。voidsetProperty(StringSE name, ObjectSE value)Unmarshallerの基礎となる実装で特定のプロパティを設定します。voidsetSchema(SchemaSE schema)後続の非整列化操作を検証するために使用する必要がある JAXPSchemaSE オブジェクトを指定します。ObjectSEunmarshal(FileSE f)指定されたファイルから XML データを非整列化し、結果のコンテンツツリーを返します。ObjectSEunmarshal(InputStreamSE is)指定された InputStream から XML データをマーシャリング解除し、結果のコンテンツツリーを返します。ObjectSEunmarshal(ReaderSE reader)指定されたリーダーから XML データをアンマーシャリングし、結果のコンテンツツリーを返します。ObjectSEunmarshal(URLSE url)指定された URL から XML データをアンマーシャリングし、結果のコンテンツツリーを返します。ObjectSEunmarshal(XMLEventReaderSE reader)指定されたプルパーサーから XML データを非整列化し、結果のコンテンツツリーを返します。<T> JAXBElement<T>unmarshal(XMLEventReaderSE reader, ClassSE<T> declaredType)ルート要素を Jakarta XML Binding にマップされたdeclaredTypeにアンマーシャルし、結果のコンテンツツリーを返します。ObjectSEunmarshal(XMLStreamReaderSE reader)指定されたプルパーサーから XML データを非整列化し、結果のコンテンツツリーを返します。<T> JAXBElement<T>unmarshal(XMLStreamReaderSE reader, ClassSE<T> declaredType)ルート要素を Jakarta XML Binding にマップされたdeclaredTypeにアンマーシャルし、結果のコンテンツツリーを返します。ObjectSEunmarshal(SourceSE source)指定された XML ソースから XML データを非整列化し、結果のコンテンツツリーを返します。<T> JAXBElement<T>unmarshal(SourceSE source, ClassSE<T> declaredType)指定された XML ソースからdeclaredTypeによって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。ObjectSEunmarshal(NodeSE node)指定された DOM ツリーからグローバル XML データを非整列化し、結果のコンテンツツリーを返します。<T> JAXBElement<T>unmarshal(NodeSE node, ClassSE<T> declaredType)Jakarta XML Binding によってマップされたdeclaredTypeによって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。ObjectSEunmarshal(InputSourceSE source)指定された SAX InputSource から XML データをアンマーシャリングし、結果のコンテンツツリーを返します。
メソッドの詳細
unmarshal
ObjectSE unmarshal(FileSE f) throws JAXBException
指定されたファイルから XML データを非整列化し、結果のコンテンツツリーを返します。グローバルルート要素のマーシャリング解除を実装します。
- パラメーター:
f- XML データをアンマーシャリングするファイル- 戻り値:
- java コンテンツツリーの新しく作成されたルートオブジェクト
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- ファイルパラメーターが null の場合
unmarshal
ObjectSE unmarshal(InputStreamSE is) throws JAXBException
指定された InputStream から XML データをマーシャリング解除し、結果のコンテンツツリーを返します。この形式のアンマーシャル API を使用すると、検証イベントの場所情報が不完全になる場合があります。グローバルルート要素のマーシャリング解除を実装します。
- パラメーター:
is- から XML データをアンマーシャリングする InputStream- 戻り値:
- java コンテンツツリーの新しく作成されたルートオブジェクト
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- InputStream パラメーターが NULL の場合
unmarshal
ObjectSE unmarshal(ReaderSE reader) throws JAXBException
指定されたリーダーから XML データをアンマーシャリングし、結果のコンテンツツリーを返します。この形式のアンマーシャル API を使用すると、リーダーがシステム ID を提供しないため、検証イベントの場所情報が不完全になる可能性があります。グローバルルート要素のマーシャリング解除を実装します。
- パラメーター:
reader- から XML データをアンマーシャリングするリーダー- 戻り値:
- java コンテンツツリーの新しく作成されたルートオブジェクト
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- InputStream パラメーターが NULL の場合- 導入:
- 1.6、JAXB 2.0
unmarshal
ObjectSE unmarshal(URLSE url) throws JAXBException
指定された URL から XML データをアンマーシャリングし、結果のコンテンツツリーを返します。グローバルルート要素のマーシャリング解除を実装します。
- パラメーター:
url- から XML データをアンマーシャリングするための URL- 戻り値:
- java コンテンツツリーの新しく作成されたルートオブジェクト
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- URL パラメーターが null の場合
unmarshal
ObjectSE unmarshal(InputSourceSE source) throws JAXBException
指定された SAX InputSource から XML データをアンマーシャリングし、結果のコンテンツツリーを返します。グローバルルート要素のマーシャリング解除を実装します。
- パラメーター:
source- XML データをアンマーシャリングするための入力ソース- 戻り値:
- java コンテンツツリーの新しく作成されたルートオブジェクト
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- InputSource パラメーターが NULL の場合
unmarshal
ObjectSE unmarshal(NodeSE node) throws JAXBException
指定された DOM ツリーからグローバル XML データを非整列化し、結果のコンテンツツリーを返します。グローバルルート要素のマーシャリング解除を実装します。
- パラメーター:
node- XML データのマーシャリングを解除するドキュメント / 要素。呼び出し元は、少なくとも Document と Element をサポートしている必要があります。- 戻り値:
- java コンテンツツリーの新しく作成されたルートオブジェクト
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- Node パラメーターが null の場合- 関連事項:
unmarshal(org.w3c.dom.Node, Class)
unmarshal
<T> JAXBElement<T> unmarshal(NodeSE node, ClassSE<T> declaredType) throws JAXBException
Jakarta XML Binding によってマップされたdeclaredTypeによって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。宣言された型によるアンマーシャルを実装します
- 型パラメーター:
T- XML バインディングのマップされたクラス- パラメーター:
node- XML データのマーシャリングを解除するドキュメント / 要素。呼び出し元は、少なくとも Document と Element をサポートしている必要があります。declaredType-nodeの XML データを保持するための適切な Jakarta XML Binding マップクラス。- 戻り値:
nodeの JAXBElement 表現- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- パラメーターが null の場合- 導入:
- 1.6、JAXB 2.0
unmarshal
ObjectSE unmarshal(SourceSE source) throws JAXBException
指定された XML ソースから XML データを非整列化し、結果のコンテンツツリーを返します。グローバルルート要素のマーシャリング解除を実装します。
クライアントアプリケーションは、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 BindingValidationEventオブジェクトに変換され、Unmarshallerに登録されたValidationEventHandlerを介してクライアントに報告されます。 注: アンマーシャリングの代わりに検証 SAX 2.0 パーサーを指定しても、オンデマンド検証を実行するために Jakarta XML Binding プロバイダーが使用する検証エンジンが必ずしも置き換えられるわけではありません。クライアントアプリケーションがアンマーシャル中に使用される代替パーサーメカニズムを指定する唯一の方法は、
unmarshal(SAXSource)API を使用することです。アンマーシャルメソッドの他のすべての形式(ファイル、URL、ノードなど)は、Jakarta XML Binding プロバイダーのデフォルトのパーサーおよびバリデーターメカニズムを使用します。- パラメーター:
source- から XML データをアンマーシャリングする XML ソース (プロバイダーは、SAXSource、DOMSource、StreamSource をサポートするためにのみ必要です。)- 戻り値:
- java コンテンツツリーの新しく作成されたルートオブジェクト
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- Source パラメーターが null の場合- 関連事項:
unmarshal(javax.xml.transform.Source, Class)
unmarshal
<T> JAXBElement<T> unmarshal(SourceSE source, ClassSE<T> declaredType) throws JAXBException
指定された XML ソースからdeclaredTypeによって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。宣言された型によるアンマーシャルを実装します
- 型パラメーター:
T- XML バインディングのマップされたクラス- パラメーター:
source- から XML データをアンマーシャリングする XML ソース (プロバイダーは、SAXSource、DOMSource、StreamSource をサポートするためにのみ必要です。)declaredType-sourceの xml ルート要素を保持するための適切な Jakarta XML Binding マップクラス- 戻り値:
- JAXBElement をルートとする Java コンテンツ
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- パラメーターが null の場合- 導入:
- 1.6、JAXB 2.0
unmarshal
ObjectSE unmarshal(XMLStreamReaderSE reader) throws JAXBException
指定されたプルパーサーから XML データを非整列化し、結果のコンテンツツリーを返します。グローバルルート要素のマーシャリング解除を実装します。
このメソッドは、パーサーが START_DOCUMENT または START_ELEMENT イベントにあることを前提としています。アンマーシャリングは、この開始イベントから対応する終了イベントまで実行されます。このメソッドが正常に返されると、
readerは終了イベントの直後にトークンを指します。- パラメーター:
reader- 読み取るパーサー。- 戻り値:
- java コンテンツツリーの新しく作成されたルートオブジェクト。
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE-readerパラメーターが NULL の場合IllegalStateExceptionSE-readerが START_DOCUMENT または START_ELEMENT イベントを指していない場合。- 導入:
- 1.6、JAXB 2.0
- 関連事項:
unmarshal(javax.xml.stream.XMLStreamReader, Class)
unmarshal
<T> JAXBElement<T> unmarshal(XMLStreamReaderSE reader, ClassSE<T> declaredType) throws JAXBException
ルート要素を Jakarta XML Binding にマップされたdeclaredTypeにアンマーシャルし、結果のコンテンツツリーを返します。このメソッドは、declaredType によるアンマーシャルを実装します。
このメソッドは、パーサーが START_DOCUMENT または START_ELEMENT イベントにあることを前提としています。アンマーシャリングは、この開始イベントから対応する終了イベントまで実行されます。このメソッドが正常に返されると、
readerは終了イベントの直後にトークンを指します。- 型パラメーター:
T- XML バインディングのマップされたクラス- パラメーター:
reader- 読み取るパーサー。declaredType-readerの START_ELEMENTXML データを保持するための適切な Jakarta XML Binding マップクラス。- 戻り値:
- JAXBElement 表現に根ざしたコンテンツツリー
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- パラメーターが null の場合- 導入:
- 1.6、JAXB 2.0
unmarshal
ObjectSE unmarshal(XMLEventReaderSE reader) throws JAXBException
指定されたプルパーサーから XML データを非整列化し、結果のコンテンツツリーを返します。このメソッドはアンマーシャルグローバルルートメソッドです。
このメソッドは、パーサーが START_DOCUMENT または START_ELEMENT イベントにあることを前提としています。アンマーシャリングは、この開始イベントから対応する終了イベントまで実行されます。このメソッドが正常に返されると、
readerは終了イベントの直後にトークンを指します。- パラメーター:
reader- 読み取るパーサー。- 戻り値:
- java コンテンツツリーの新しく作成されたルートオブジェクト。
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE-readerパラメーターが NULL の場合IllegalStateExceptionSE-readerが START_DOCUMENT または START_ELEMENT イベントを指していない場合。- 導入:
- 1.6、JAXB 2.0
- 関連事項:
unmarshal(javax.xml.stream.XMLEventReader, Class)
unmarshal
<T> JAXBElement<T> unmarshal(XMLEventReaderSE reader, ClassSE<T> declaredType) throws JAXBException
ルート要素を Jakarta XML Binding にマップされたdeclaredTypeにアンマーシャルし、結果のコンテンツツリーを返します。このメソッドは、declaredType によるアンマーシャルを実装します。
このメソッドは、パーサーが START_DOCUMENT または START_ELEMENT イベントにあることを前提としています。アンマーシャリングは、この開始イベントから対応する終了イベントまで実行されます。このメソッドが正常に返されると、
readerは終了イベントの直後にトークンを指します。- 型パラメーター:
T- XML バインディングのマップされたクラス- パラメーター:
reader- 読み取るパーサー。declaredType-readerの START_ELEMENTXML データを保持するための適切な Jakarta XML Binding マップクラス。- 戻り値:
- JAXBElement 表現に根ざしたコンテンツツリー
- 例外:
JAXBException- マーシャリング解除中に予期しないエラーが発生した場合UnmarshalException-ValidationEventHandlerがhandleEventメソッドから false を返す場合、またはUnmarshallerが XML から Java へのバインディングを実行できない場合。XML データのマーシャリング解除を参照してくださいIllegalArgumentExceptionSE- パラメーターが null の場合- 導入:
- 1.6、JAXB 2.0
getUnmarshallerHandler
UnmarshallerHandler getUnmarshallerHandler()
XML パイプラインのコンポーネントとして使用できる unmarshaller ハンドラーオブジェクトを取得します。Jakarta XML Binding Provider は、このメソッドの複数の呼び出しに対して同じハンドラーオブジェクトを返すことができます。つまり、このメソッドは必ずしも
UnmarshallerHandlerの新しいインスタンスを作成するわけではありません。アプリケーションが複数のUnmarshallerHandlerを使用する必要がある場合は、複数のUnmarshallerを作成する必要があります。- 戻り値:
- アンマーシャラーハンドラーオブジェクト
- 関連事項:
UnmarshallerHandler
setEventHandler
void setEventHandler(ValidationEventHandler handler) throws JAXBException
アプリケーションがValidationEventHandlerを登録できるようにします。いずれかの非マーシャリングメソッドの呼び出し中に検証エラーが発生した場合、
ValidationEventHandlerは Jakarta XML Binding Provider によって呼び出されます。クライアントアプリケーションがアンマーシャルメソッドを呼び出す前にValidationEventHandlerを登録しない場合、ValidationEventsはデフォルトのイベントハンドラーによって処理され、最初のエラーまたは致命的なエラーが発生した後にアンマーシャル操作が終了します。null パラメーターを指定してこのメソッドを呼び出すと、Unmarshaller はデフォルトのイベントハンドラーに戻ります。
- パラメーター:
handler- 検証イベントハンドラー- 例外:
JAXBException- イベントハンドラーの設定中にエラーが発生した場合
getEventHandler
ValidationEventHandler getEventHandler() throws JAXBException
現在のイベントハンドラー、または設定されていない場合はデフォルトのイベントハンドラーを返します。- 戻り値:
- 現在の ValidationEventHandler、または設定されていない場合はデフォルトのイベントハンドラー
- 例外:
JAXBException- 現在のイベントハンドラーの取得中にエラーが発生した場合
setProperty
void setProperty(StringSE name, ObjectSE value) throws PropertyException
Unmarshallerの基礎となる実装で特定のプロパティを設定します。このメソッドは、上記の標準 Jakarta XML Binding 定義プロパティの 1 つ、またはプロバイダー固有のプロパティを設定するためにのみ使用できます。未定義のプロパティを設定しようとすると、PropertyException がスローされます。サポートされているプロパティを参照してください。- パラメーター:
name- 設定するプロパティの名前。この値は、定数フィールドの 1 つまたはユーザー指定の文字列を使用して指定できます。value- 設定するプロパティの値- 例外:
PropertyException- 指定されたプロパティまたは値の処理中にエラーが発生した場合IllegalArgumentExceptionSE- name パラメーターが null の場合
getProperty
ObjectSE getProperty(StringSE name) throws PropertyException
Unmarshallerの基礎となる実装で特定のプロパティを取得します。このメソッドは、上記の標準 Jakarta XML Binding 定義プロパティの 1 つ、またはプロバイダー固有のプロパティを取得するためにのみ使用できます。未定義のプロパティを取得しようとすると、PropertyException がスローされます。サポートされているプロパティを参照してください。- パラメーター:
name- 取得するプロパティの名前- 戻り値:
- リクエストされたプロパティの値
- 例外:
PropertyException- 指定されたプロパティまたは値のプロパティ名の取得中にエラーが発生した場合IllegalArgumentExceptionSE- name パラメーターが null の場合
setSchema
void setSchema(SchemaSE schema)
後続の非整列化操作を検証するために使用する必要がある JAXPSchemaSE オブジェクトを指定します。このメソッドに null を渡すと、検証が無効になります。最初、このプロパティは
nullに設定されています。- パラメーター:
schema- アンマーシャリング操作を検証するスキーマオブジェクト、または検証を無効にする null- 例外:
UnsupportedOperationExceptionSE- このメソッドが、JAXB 1.0 マップクラスを参照する JAXBContext から作成された Unmarshaller で呼び出された場合にスローされる可能性があります- 導入:
- 1.6、JAXB 2.0
getSchema
SchemaSE getSchema()
非整列化時の検証を実行するために使用されている JAXPSchemaSE オブジェクトを取得します。アンマーシャラーにスキーマが設定されていない場合、このメソッドは null を返し、アンマーシャル時の検証が実行されないことを示します。- 戻り値:
- 非マーシャル時間検証を実行するために使用されているスキーマオブジェクト、または存在しない場合は null
- 例外:
UnsupportedOperationExceptionSE- このメソッドが、JAXB 1.0 マップクラスを参照する JAXBContext から作成された Unmarshaller で呼び出された場合にスローされる可能性があります- 導入:
- 1.6、JAXB 2.0
setAdapter
<A extends XmlAdapter<?,?>> void setAdapter(A adapter)
XmlAdapterの構成済みインスタンスをこのアンマーシャラーに関連付けます。これは、
setAdapter(adapter.getClass(),adapter);を呼び出す便利なメソッドです。- 型パラメーター:
A-XmlAdapterの型- パラメーター:
adapter-XmlAdapterの構成済みインスタンス- 例外:
IllegalArgumentExceptionSE- アダプターパラメーターが null の場合。UnsupportedOperationExceptionSE- JAXB 1.0 実装に対して再度呼び出された場合。- 導入:
- 1.6、JAXB 2.0
- 関連事項:
setAdapter(Class,XmlAdapter)
setAdapter
<A extends XmlAdapter<?,?>> void setAdapter(ClassSE<A> type, A adapter)
XmlAdapterの構成済みインスタンスをこのアンマーシャラーに関連付けます。すべてのアンマーシャラーは、
MapSE <ClassSE、XmlAdapter> を内部的に維持します。これは、フィールド / メソッドにXmlJavaTypeAdapterアノテーションが付けられたアンマーシャリングクラスに使用されます。この方法により、アプリケーションは
XmlAdapterの構成済みインスタンスを使用できます。アダプターのインスタンスが指定されていない場合、アンマーシャラーはデフォルトのコンストラクターを呼び出してアダプターを作成します。- 型パラメーター:
A- アダプターの型- パラメーター:
type- アダプターの型。指定されたインスタンスは、XmlJavaTypeAdapter.value()がこの型を参照するときに使用されます。adapter- 使用するアダプターのインスタンス。null の場合、この型に設定されている現在のアダプターの登録が解除されます。- 例外:
IllegalArgumentExceptionSE- type パラメーターが null の場合。UnsupportedOperationExceptionSE- JAXB 1.0 実装に対して再度呼び出された場合。- 導入:
- 1.6、JAXB 2.0
getAdapter
<A extends XmlAdapter<?,?>> A getAdapter(ClassSE<A> type)
指定された型に関連付けられたアダプターを取得します。これは、setAdapter(A)メソッドの逆の操作です。- 型パラメーター:
A- アダプターの型- パラメーター:
type- アダプターの型。指定されたインスタンスは、XmlJavaTypeAdapter.value()がこの型を参照するときに使用されます。- 戻り値:
- 指定された型に関連付けられたアダプター。
- 例外:
IllegalArgumentExceptionSE- type パラメーターが null の場合。UnsupportedOperationExceptionSE- JAXB 1.0 実装に対して再度呼び出された場合。- 導入:
- 1.6、JAXB 2.0
setAttachmentUnmarshaller
void setAttachmentUnmarshaller(AttachmentUnmarshaller au)
cid の content-id URI を解決するコンテキストを、接続ファイルとして渡されたバイナリデータに関連付けます。アンマーシャラーが XOP 処理を実行している場合でも、setSchema(Schema)を介して有効化されたアンマーシャル時間検証をサポートする必要があります。- パラメーター:
au- 設定する添付ファイルのアンマーシャラー- 例外:
IllegalStateExceptionSE- アンマーシャリング操作中にこのメソッドを同時に呼び出そうとした場合。
getAttachmentUnmarshaller
AttachmentUnmarshaller getAttachmentUnmarshaller()
setListener
void setListener(Unmarshaller.Listener listener)
アンマーシャルイベントコールバック
Unmarshaller.ListenerをこのUnmarshallerに登録します。Unmarshaller ごとにリスナーは 1 つだけです。リスナーを設定すると、以前に設定したリスナーが置き換えられます。リスナーを
nullに設定することにより、現在のリスナーの登録を解除できます。- パラメーター:
listener- このUnmarshallerの非マーシャルイベントコールバックを提供します- 導入:
- 1.6、JAXB 2.0
getListener
Unmarshaller.Listener getListener()
この
Unmarshallerに登録されているUnmarshaller.Listenerを返します。- 戻り値:
- この Unmarshaller にリスナーが登録されていない場合は、
Unmarshaller.Listenerまたはnullを登録します。 - 導入:
- 1.6、JAXB 2.0