インターフェース Unmarshaller
- すべての既知の実装クラス:
AbstractUnmarshallerImpl
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 検証メカニズムを有効または無効にできます。高度なクライアントは、独自の検証用 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 class
Unmarshaller.Listener
このクラスの実装のインスタンスをUnmarshaller
に登録して、非マーシャリングイベントを外部でリッスンします。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 <A extends XmlAdapter<?,?>>
AgetAdapter(ClassSE<A> type)
指定された型に関連付けられたアダプターを取得します。AttachmentUnmarshaller
getAttachmentUnmarshaller()
ValidationEventHandler
getEventHandler()
現在のイベントハンドラー、または設定されていない場合はデフォルトのイベントハンドラーを返します。Unmarshaller.Listener
getListener()
このUnmarshaller
に登録されているUnmarshaller.Listener
を返します。ObjectSE
getProperty(StringSE name)
Unmarshaller
の基礎となる実装で特定のプロパティを取得します。SchemaSE
getSchema()
非整列化時の検証を実行するために使用されている JAXPSchema
SE オブジェクトを取得します。UnmarshallerHandler
getUnmarshallerHandler()
XML パイプラインのコンポーネントとして使用できる unmarshaller ハンドラーオブジェクトを取得します。<A extends XmlAdapter<?,?>>
voidsetAdapter(A adapter)
XmlAdapter
の構成済みインスタンスをこのアンマーシャラーに関連付けます。<A extends XmlAdapter<?,?>>
voidsetAdapter(ClassSE<A> type, A 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)
後続の非整列化操作を検証するために使用する必要がある JAXPSchema
SE オブジェクトを指定します。ObjectSE
unmarshal(FileSE f)
指定されたファイルから XML データを非整列化し、結果のコンテンツツリーを返します。ObjectSE
unmarshal(InputStreamSE is)
指定された InputStream から XML データをマーシャリング解除し、結果のコンテンツツリーを返します。ObjectSE
unmarshal(ReaderSE reader)
指定されたリーダーから 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(SourceSE source)
指定された XML ソースから XML データを非整列化し、結果のコンテンツツリーを返します。<T> JAXBElement<T>
unmarshal(SourceSE source, ClassSE<T> declaredType)
指定された XML ソースからdeclaredType
によって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。ObjectSE
unmarshal(NodeSE node)
指定された DOM ツリーからグローバル XML データを非整列化し、結果のコンテンツツリーを返します。<T> JAXBElement<T>
unmarshal(NodeSE node, ClassSE<T> declaredType)
Jakarta XML Binding によってマップされたdeclaredType
によって XML データをアンマーシャリングし、結果のコンテンツツリーを返します。ObjectSE
unmarshal(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)
後続の非整列化操作を検証するために使用する必要がある JAXPSchema
SE オブジェクトを指定します。このメソッドに null を渡すと、検証が無効になります。最初、このプロパティは
null
に設定されています。- パラメーター:
schema
- アンマーシャリング操作を検証するスキーマオブジェクト、または検証を無効にする null- 例外:
UnsupportedOperationExceptionSE
- このメソッドが、JAXB 1.0 マップクラスを参照する JAXBContext から作成された Unmarshaller で呼び出された場合にスローされる可能性があります- 導入:
- 1.6、JAXB 2.0
getSchema
SchemaSE getSchema()
非整列化時の検証を実行するために使用されている JAXPSchema
SE オブジェクトを取得します。アンマーシャラーにスキーマが設定されていない場合、このメソッドは 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
の構成済みインスタンスをこのアンマーシャラーに関連付けます。すべてのアンマーシャラーは、
Map
SE <Class
SE、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