public interface Unmarshaller
ファイルから非整列化します。
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 JAXB to unmarshal JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" ); Unmarshaller u = jc.createUnmarshaller(); ValidationEventCollector vec = new ValidationEventCollector(); u.setEventHandler( vec ); // turn off the JAXB 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 データを直列化復元できます。通常は、「グローバルに宣言されたルート要素の非整列化」で説明されている非整列化メソッドを使用すれば十分です。これらの非整列化メソッドは、グローバル XML 要素宣言および型宣言から JAXB マップクラスへのJAXBContext
のマッピングを利用して、XML データのルート要素の非整列化処理を初期化します。JAXBContext
のマッピングが XML データのルート要素を非整列化するのに不十分である場合、アプリケーションは declaredType による非整列化メソッドを使用して非整列化プロセスを支援できます。これらのメソッドは、ルート要素がスキーマのローカル要素宣言に対応する XML データを非整列化するときに役立ちます。
非整列化メソッドは null を返しません。非整列化プロセスが XML コンテンツのルートを JAXB マップオブジェクトのルートに非整列化できない場合、JAXBException をスローすることによって致命的なエラーが報告され、処理が中止されます。
declaredType パラメータを含まない非整列化メソッドは、JAXBContext
を使用して XML データのルート要素を非整列化します。JAXBContext
インスタンスは、この Unmarshaller の作成に使用されたインスタンスです。JAXBContext
インスタンスは、グローバルに宣言された XML 要素および型定義名から JAXB マップクラスへのマッピングを保持しています。非整列化メソッドは、ルート要素の XML 名または @xsi:type、あるいはその両方から JAXB マップクラスへのマッピングがJAXBContext
に含まれるかどうかをチェックします。これを含む場合、適切な JAXB マップクラスを使用して XML データを非整列化します。ルート要素名が不明で、ルート要素に @xsi:type が含まれる場合は、JAXBElement
の値として JAXB マップクラスを使用して XML データが非整列化されます。JAXBContext
オブジェクトに、ルート要素の名前またはその @xsi:type (これが存在する場合) に対するマッピングが含まれない場合、非整列化操作はUnmarshalException
をスローすることによってただちに強制終了されます。次のサブセクションで説明する declaredType による非整列化を使用することによって、この例外シナリオを回避することができます。
declaredType
パラメータを使用した非整列化メソッドにより、JAXBContext
にルート要素の XML 名のマッピングが含まれないときでも、XML データのルート要素を直列化復元できます。unmarshaller は、アプリケーションが提供したマッピングを使用してルート要素を非整列化します。このマッピングは declaredType パラメータとして指定されます。これらの非整列化メソッドを使用する場合、ルート要素の要素名がJAXBContext
でマップされている場合であっても、ルート要素を直列化復元するためのマッピングをdeclaredType
パラメータがオーバーライドします。また、XML データのルート要素に xsi:type 属性があり、その属性の値がJAXBContext
によって JAXB マップクラスにマップされている型定義を参照している場合は、ルート要素の xsi:type 属性が非整列化メソッドの declaredType パラメータよりも優先されます。これらのメソッドは通常、JAXBElement<declaredType> インスタンスを返します。次のテーブルは、戻り値の JAXBElement インスタンスのプロパティーがどのように設定されているかを示します。
宣言型による非整列化が返した JAXBElement JAXBElement プロパティー 値 name xml element name
value instanceof declaredType
declaredType 非整列化メソッドの declaredType
パラメータscope null
(実際のスコープが不明)
declaredType による非整列化メソッドの例を次に示します。
org.w3c.dom.Node からの declaredType による非整列化を実行します。
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 JAXB mapping of the type of local element declaration foo. JAXBElement<FooType> foo = u.unmarshal( fooSubtree, FooType.class);
SAX2.0 準拠パーサーのサポート
クライアントアプリケーションは、それぞれが選んだ SAX2.0 準拠パーサーを選択できます。SAX パーサーが選択されない場合、JAXB プロバイダのデフォルトパーサーが使用されます。JAXB プロバイダのデフォルトパーサーが SAX2.0 準拠である必要はないものの、すべてのプロバイダはクライアントアプリケーションが SAX2.0 パーサーを指定できるようにする必要があります。プロバイダによっては、スキーマコンパイル時に SAX2.0 パーサーを指定することをクライアントアプリケーションに要求する場合もあります。詳細は、unmarshal(Source)
を参照してください。
検証と整形式
クライアントアプリケーションは、setSchema(javax.xml.validation.Schema) API を介して JAXP 1.3 検証メカニズムを有効または無効にできます。高度なクライアントは、
unmarshal(Source)
API を使用して、それ自身の検証 SAX 2.0 準拠パーサーを指定し、JAXP 1.3 検証メカニズムを回避できます。無効な XML コンテンツの非整列化は JAXB 2.0 で定義されているため、Unmarshaller のデフォルト検証イベントハンドラは JAXB 1.0 よりもより寛大に処理されます。JAXB 1.0 バインディングコンパイラによって生成されたスキーマ派生コードが
JAXBContext
に登録されている場合、デフォルト非整列化検証ハンドラはDefaultValidationEventHandler
であり、致命的なエラーまたはエラーの発生後に整列化操作を終了させます。JAXB 2.0 クライアントアプリケーションの場合、明示的に定義されたデフォルト検証ハンドラがなく、デフォルトイベント処理は致命的なエラーの発生後に整列化操作を終了させるのみです。
現在、Unmarshaller に関してすべての JAXB プロバイダがサポートする必要があるプロパティーはありません。しかし、一部のプロバイダは、プロバイダ固有のプロパティーの固有のセットをサポートする場合があります。
Unmarshaller
は、2 つのスタイルのコールバックメカニズムを提供します。これらにより、非整列化プロセスの重要な時点でのアプリケーション固有の処理が可能になります。「クラス定義された」イベントコールバックでは、JAXB マップクラスに置かれたアプリケーション固有のコードが非整列化中にトリガーされます。「外部リスナー」は、型のイベントコールバックを介するのではなく、一度のコールバックメソッドでの非整列化イベントの集中処理を可能にします。「クラス定義された」イベントコールバックメソッドにより、任意の JAXB マップクラスは次のメソッドシグニチャーを持つメソッドを定義することによって、固有のコールバックメソッドを指定できます。
コールバックメソッドがクラスの public 以外のメソッドまたはフィールドへのアクセスを必要とする場合は、クラス定義コールバックメソッドを使用する必要があります。// 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);外部リスナーコールバックメカニズムでは、
setListener(Listener)
にUnmarshaller.Listener
インスタンスを登録できます。外部リスナーはすべてのコールバックイベントを受け取るため、クラスごとに定義されるコールバックメソッドよりも、より集中的な処理が可能になります。非整列化プロセスが JAXB 要素または JAXB マップクラスに整列化しようとした場合、外部リスナーはイベントを受け取ります。「クラス定義された」イベントコールバックメソッドと外部リスナーイベントコールバックメソッドはそれぞれ独立しており、1 つのイベントに対し両方を呼び出すことができます。両方のリスナーコールバックメソッドが存在する場合の呼び出し順序は、
Unmarshaller.Listener.beforeUnmarshal(Object, Object)
およびUnmarshaller.Listener.afterUnmarshal(Object, Object)
で定義されます。例外をスローしたイベントコールバックメソッドは、現在の非整列化プロセスを終了させます。
JAXBContext
, Marshaller
, Validator
修飾子と型 | インタフェースと説明 |
---|---|
static class |
Unmarshaller.Listener
Unmarshaller にこのクラスの実装のインスタンスを登録し、非整列化イベントを外部的に待機します。 |
修飾子と型 | メソッドと説明 |
---|---|
<A extends XmlAdapter> |
getAdapter(Class<A> type)
指定した型に関連付けられているアダプタを取得します。
|
AttachmentUnmarshaller |
getAttachmentUnmarshaller() |
ValidationEventHandler |
getEventHandler()
現在のイベントハンドラ、または、それが設定されていない場合はデフォルトイベントハンドラを返します。
|
Unmarshaller.Listener |
getListener()
この
Unmarshaller に登録された Unmarshaller.Listener を返します。 |
Object |
getProperty(String name)
Unmarshaller の基本となる実装の特定のプロパティーを取得します。
|
Schema |
getSchema()
非整列化時の検証に使用される JAXP 1.3
Schema オブジェクトを取得します。 |
UnmarshallerHandler |
getUnmarshallerHandler()
XML パイプラインのコンポーネントとして使用できる、unmarshaller ハンドラオブジェクトを取得します。
|
boolean |
isValidating()
非推奨。
JAXB2.0 以降は、次を参照してください
getSchema() |
<A extends XmlAdapter> |
setAdapter(Class<A> type, A adapter)
XmlAdapter の構成済みのインスタンスをこのアンマーシャラに関連付けます。 |
void |
setAdapter(XmlAdapter adapter)
XmlAdapter の構成済みのインスタンスをこのアンマーシャラに関連付けます。 |
void |
setAttachmentUnmarshaller(AttachmentUnmarshaller au)
cid、コンテンツ ID URI を、添付として渡されたバイナリデータに解決するコンテキストを関連付けます。
|
void |
setEventHandler(ValidationEventHandler handler)
アプリケーションが ValidationEventHandler を登録することができます。
|
void |
setListener(Unmarshaller.Listener listener)
この
Unmarshaller に非整列化イベントコールバックUnmarshaller.Listener を登録します。 |
void |
setProperty(String name, Object value)
Unmarshaller の基本となる実装の特定のプロパティーを設定します。
|
void |
setSchema(Schema schema)
後の非整列化操作の検証に使用する、JAXP 1.3
Schema オブジェクトを指定します。 |
void |
setValidating(boolean validating)
非推奨。
JAXB2.0 以降は、次を参照してください
setSchema(javax.xml.validation.Schema) |
Object |
unmarshal(File f)
指定されたファイルから XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
Object |
unmarshal(InputSource source)
指定された SAX InputSource から XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
Object |
unmarshal(InputStream is)
指定された InputStream から XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
Object |
unmarshal(Node node)
指定された DOM ツリーからグローバル XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
<T> JAXBElement<T> |
unmarshal(Node node, Class<T> declaredType)
JAXB マップ declaredType によって XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
Object |
unmarshal(Reader reader)
指定された Reader から XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
Object |
unmarshal(Source source)
指定された XML Source から XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
<T> JAXBElement<T> |
unmarshal(Source source, Class<T> declaredType)
declaredType に基づき、指定された XML Source から XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
Object |
unmarshal(URL url)
指定された URL から XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
Object |
unmarshal(XMLEventReader reader)
指定されたプルパーサーから XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
<T> JAXBElement<T> |
unmarshal(XMLEventReader reader, Class<T> declaredType)
JAXB マップ declaredType にルート要素を非整列化し、結果として得られるコンテンツツリーを返します。
|
Object |
unmarshal(XMLStreamReader reader)
指定されたプルパーサーから XML データを非整列化し、結果として得られるコンテンツツリーを返します。
|
<T> JAXBElement<T> |
unmarshal(XMLStreamReader reader, Class<T> declaredType)
JAXB マップ declaredType にルート要素を非整列化し、結果として得られるコンテンツツリーを返します。
|
Object unmarshal(File f) throws JAXBException
グローバルルート要素の非整列化を実装します。
f
- 非整列化する XML データが含まれるファイルJAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- file パラメータが null の場合Object unmarshal(InputStream is) throws JAXBException
グローバルルート要素の非整列化を実装します。
is
- 非整列化する XML データが含まれる InputStreamJAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- InputStream パラメータが null の場合Object unmarshal(Reader reader) throws JAXBException
グローバルルート要素の非整列化を実装します。
reader
- 非整列化する XML データが含まれる ReaderJAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- InputStream パラメータが null の場合Object unmarshal(URL url) throws JAXBException
グローバルルート要素の非整列化を実装します。
url
- 非整列化する XML データが含まれる URLJAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- URL パラメータが null の場合Object unmarshal(InputSource source) throws JAXBException
グローバルルート要素の非整列化を実装します。
source
- 非整列化する XML データが含まれる入力ソースJAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- InputSource パラメータが null の場合Object unmarshal(Node node) throws JAXBException
グローバルルート要素の非整列化を実装します。
node
- 非整列化する XML データが含まれるドキュメントまたは要素。呼び出し側は最低限、文書と要素をサポートする必要がある。JAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- Node パラメータが null の場合unmarshal(org.w3c.dom.Node, Class)
<T> JAXBElement<T> unmarshal(Node node, Class<T> declaredType) throws JAXBException
宣言型による非整列化を実装します
node
- 非整列化する XML データが含まれるドキュメントまたは要素。呼び出し側は最低限、文書と要素をサポートする必要がある。declaredType
- node の XML データを保持する、適切な JAXB マップクラス。JAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- 任意のパラメータが null の場合Object unmarshal(Source source) throws JAXBException
グローバルルート要素の非整列化を実装します。
クライアントアプリケーションは、その JAXB プロバイダで提供されているデフォルトパーサーメカニズムを使用しないことを選択できます。任意の SAX 2.0 準拠パーサーを、JAXB プロバイダのデフォルトメカニズムに置換できます。これを行うため、クライアントアプリケーションは、SAX 2.0 パーサープロバイダが実装している XMLReader を含む SAXSource を適切に構成する必要があります。XMLReader に org.xml.sax.ErrorHandler が登録されている場合、それが JAXB プロバイダによって置き換えられ、検証エラーは JAXB の ValidationEventHandler メカニズムを介して報告される可能性があります。SAXSource に XMLReader が含まれない場合、JAXB プロバイダのデフォルトパーサーメカニズムが使用されます。
このパーサー置換メカニズムは、JAXB プロバイダの非整列化時の検証エンジンの置換にも使用できます。クライアントアプリケーションは、(前述の例に示したように) その SAX 2.0 準拠パーサーが検証を実行するように適切に設定する必要があります。非整列化操作中にパーサーが SAXParserExceptions を検出すると、JAXB プロバイダがそれを処理し、JAXB ValidationEvent オブジェクトに変換されます。このオブジェクトは、Unmarshaller に登録されている ValidationEventHandler を介してクライアントに報告されます。注: 非整列化に代替の検証 SAX 2.0 パーサーを指定した場合でも、オンデマンドの検証を実行するために JAXB プロバイダが使用する検証エンジンは必ずしも置き換えられません。
非整列化中に使用される別のパーサーメカニズムをクライアントアプリケーションが指定できる唯一の方法は、unmarshal(SAXSource) API を介する方法です。非整列化メソッドのほかのすべての形式 (File、URL、Node など) は、JAXB プロバイダのデフォルトのパーサーとバリデータメカニズムを使用します。
source
- 非整列化する XML データが含まれる XML Source (プロバイダがサポートする必要があるのは、SAXSource、DOMSource、および StreamSource だけである)JAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- Source パラメータが null の場合unmarshal(javax.xml.transform.Source, Class)
<T> JAXBElement<T> unmarshal(Source source, Class<T> declaredType) throws JAXBException
宣言型による非整列化を実装します
「プラグイン可能な SAX 2.0 パーサー」を参照してください
source
- 非整列化する XML データが含まれる XML Source (プロバイダがサポートする必要があるのは、SAXSource、DOMSource、および StreamSource だけである)declaredType
- source の XML ルート要素を保持する、適切な JAXB マップクラスJAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- 任意のパラメータが null の場合Object unmarshal(XMLStreamReader reader) throws JAXBException
グローバルルート要素の非整列化を実装します。
このメソッドは、パーサーでの START_DOCUMENT または START_ELEMENT イベントの発生を前提としています。非整列化は、この start イベントから、対応する end イベントまでの間に実行されます。このメソッドが正常な結果を返す場合、reader は、end イベントの直後のトークンをポイントします。
reader
- 読み込まれるパーサー。JAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- reader パラメータが null の場合IllegalStateException
- reader が START_DOCUMENT または START_ELEMENT イベントをポイントしていない場合。unmarshal(javax.xml.stream.XMLStreamReader, Class)
<T> JAXBElement<T> unmarshal(XMLStreamReader reader, Class<T> declaredType) throws JAXBException
このメソッドは、宣言型による非整列化を実装します。
このメソッドは、パーサーでの START_DOCUMENT または START_ELEMENT イベントの発生を前提としています。非整列化は、この start イベントから、対応する end イベントまでの間に実行されます。このメソッドが正常な結果を返す場合、reader は、end イベントの直後のトークンをポイントします。
reader
- 読み込まれるパーサー。declaredType
- reader の START_ELEMENT XML データを保持する、適切な JAXB マップクラス。JAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- 任意のパラメータが null の場合Object unmarshal(XMLEventReader reader) throws JAXBException
このメソッドは、グローバルルートの非整列化メソッドです。
このメソッドは、パーサーでの START_DOCUMENT または START_ELEMENT イベントの発生を前提としています。非整列化は、この start イベントから、対応する end イベントまでの間に実行されます。このメソッドが正常な結果を返す場合、reader は、end イベントの直後のトークンをポイントします。
reader
- 読み込まれるパーサー。JAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- reader パラメータが null の場合IllegalStateException
- reader が START_DOCUMENT または START_ELEMENT イベントをポイントしていない場合。unmarshal(javax.xml.stream.XMLEventReader, Class)
<T> JAXBElement<T> unmarshal(XMLEventReader reader, Class<T> declaredType) throws JAXBException
このメソッドは、宣言型による非整列化を実装します。
このメソッドは、パーサーでの START_DOCUMENT または START_ELEMENT イベントの発生を前提としています。非整列化は、この start イベントから、対応する end イベントまでの間に実行されます。このメソッドが正常な結果を返す場合、reader は、end イベントの直後のトークンをポイントします。
reader
- 読み込まれるパーサー。declaredType
- reader の START_ELEMENT XML データを保持する、適切な JAXB マップクラス。JAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
の handleEvent メソッドから false が返されるか、Unmarshaller が XML から Java へのバインディングを実行できない場合。「XML データの非整列化」を参照IllegalArgumentException
- 任意のパラメータが null の場合UnmarshallerHandler getUnmarshallerHandler()
このメソッドを複数回呼び出した場合、同じハンドラオブジェクトが返される可能性があります。つまり、このメソッドは必ずしも新しい UnmarshallerHandler インスタンスを作成しません。アプリケーションが複数の UnmarshallerHandler を使用する必要がある場合、複数の Unmarshaller を作成するようにしてください。
UnmarshallerHandler
void setValidating(boolean validating) throws JAXBException
setSchema(javax.xml.validation.Schema)
を参照このメソッドは、非整列化メソッドのいずれかを呼び出す前、または呼び出したあとにのみ、呼び出すことができます。
このメソッドは、JAXB プロバイダのデフォルト非整列化時検証メカニズムを制御するのみです。クライアント独自の検証 SAX 2.0 準拠パーサーの指定には影響を与えません。各自の非整列化時検証メカニズムを指定するクライアントがこの API を介して JAXB プロバイダのデフォルト検証メカニズムをオフにし、「二重検証」を回避することがあります。
このメソッドは、JAXB 2.0 の時点で非推奨のメソッドです。新しい setSchema(javax.xml.validation.Schema)
API を使用してください。
validating
- Unmarshaller が非整列化中に検証を行うようにする場合は true、それ以外の場合は falseJAXBException
- 非整列化時の検証を有効または無効にしている途中でエラーが発生した場合UnsupportedOperationException
- JAXB 2.0 マップクラスを参照している JAXBContext から作成された Unmarshaller でこのメソッドが呼び出された場合にスローされる可能性があるboolean isValidating() throws JAXBException
getSchema()
を参照この API は、JAXB プロバイダのデフォルト非整列化時検証メカニズムの状態を返します。
このメソッドは、JAXB 2.0 の時点で非推奨のメソッドです。新しい getSchema()
API を使用してください。
JAXBException
- 検証フラグの取得中にエラーが発生した場合UnsupportedOperationException
- JAXB 2.0 マップクラスを参照している JAXBContext から作成された Unmarshaller でこのメソッドが呼び出された場合にスローされる可能性があるvoid setEventHandler(ValidationEventHandler handler) throws JAXBException
ValidationEventHandler は、いずれかの非整列化メソッドを呼び出している途中で検証エラーが発生した場合、JAXB プロバイダによって呼び出されます。非整列化メソッドを呼び出す前にクライアントアプリケーションが ValidationEventHandler を登録していない場合、ValidationEvents はデフォルトイベントハンドラによって処理されます。デフォルトイベントハンドラは、最初のエラーまたは致命的なエラーの発生後に非整列化操作を終了させます。
このメソッドを null パラメータとともに呼び出した場合、Unmarshaller はデフォルトイベントハンドラに戻ります。
handler
- 検証イベントハンドラJAXBException
- イベントハンドラの設定中にエラーが発生した場合ValidationEventHandler getEventHandler() throws JAXBException
JAXBException
- 現在のイベントハンドラの取得中にエラーが発生した場合void setProperty(String name, Object value) throws PropertyException
name
- 設定するプロパティーの名前。この値は、定数フィールドの 1 つかユーザーが指定した文字列を使用して指定できる。value
- 設定するプロパティーの値PropertyException
- 指定したプロパティーまたは値の処理中にエラーが発生した場合IllegalArgumentException
- name パラメータが null の場合Object getProperty(String name) throws PropertyException
name
- 取得するプロパティーの名前PropertyException
- 指定したプロパティーまたは値プロパティー名の取得中にエラーが発生した場合IllegalArgumentException
- name パラメータが null の場合void setSchema(Schema schema)
Schema
オブジェクトを指定します。このメソッドに null を渡すと、検証は無効になります。
このメソッドは、非推奨の setValidating(boolean)
API に置き換わるものです。
このプロパティーは最初に null に設定されます。
schema
- 非整列化操作の検証に使用するスキーマオブジェクト。検証を無効にする場合は nullUnsupportedOperationException
- JAXB 1.0 マップクラスを参照している JAXBContext から作成された Unmarshaller でこのメソッドが呼び出された場合にスローされる可能性があるSchema getSchema()
Schema
オブジェクトを取得します。Unmarshaller にスキーマが設定されていない場合、このメソッドは、非整列化時に検証を実行しないことを示す、null を返します。
このメソッドは、非推奨の isValidating()
API に代わる機能であり、Schema オブジェクトへのアクセスを提供します。Unmarshaller が検証を有効にしているかどうかを判断するには、戻り値の型と null を照らし合わせてチェックすれば簡単にわかります。
boolean isValidating = u.getSchema()!=null;
UnsupportedOperationException
- JAXB 1.0 マップクラスを参照している JAXBContext から作成された Unmarshaller でこのメソッドが呼び出された場合にスローされる可能性があるvoid setAdapter(XmlAdapter adapter)
XmlAdapter
の構成済みのインスタンスをこのアンマーシャラに関連付けます。
これは setAdapter(adapter.getClass(),adapter);
を呼び出す簡易メソッドです。
IllegalArgumentException
- adapter パラメータが null の場合。UnsupportedOperationException
- JAXB 1.0 実装に対して呼び出された場合。setAdapter(Class,XmlAdapter)
<A extends XmlAdapter> void setAdapter(Class<A> type, A adapter)
XmlAdapter
の構成済みのインスタンスをこのアンマーシャラに関連付けます。
すべての Unmarshaller は、内部的に Map
<Class
,XmlAdapter
> を保持しており、フィールドまたはメソッドが XmlJavaTypeAdapter
で注釈されたクラスを非整列化するために使用します。
このメソッドにより、アプリケーションは XmlAdapter
の構成済みのインスタンスを使用できます。アダプタのインスタンスが与えられない場合、Unmarshaller はそのデフォルトコンストラクタを呼び出してインスタンスを作成します。
type
- アダプタの型。XmlJavaTypeAdapter.value()
がこの型を参照する場合は、指定したインスタンスが使用される。adapter
- 使用するアダプタのインスタンス。null の場合、この型に対して現在設定されているアダプタの登録が解除される。IllegalArgumentException
- type パラメータが null の場合。UnsupportedOperationException
- JAXB 1.0 実装に対して呼び出された場合。<A extends XmlAdapter> A getAdapter(Class<A> type)
setAdapter(javax.xml.bind.annotation.adapters.XmlAdapter)
メソッドの逆の操作です。IllegalArgumentException
- type パラメータが null の場合。UnsupportedOperationException
- JAXB 1.0 実装に対して呼び出された場合。void setAttachmentUnmarshaller(AttachmentUnmarshaller au)
cid、コンテンツ ID URI を、添付として渡されたバイナリデータに解決するコンテキストを関連付けます。
非整列化時の検証は、setSchema(Schema)
を介して有効化され、Unmarshaller が XOP 処理を実行する場合でもサポートする必要があります。
IllegalStateException
- 非整列化処理中にこのメソッドを並行して呼び出そうとした場合。AttachmentUnmarshaller getAttachmentUnmarshaller()
void setListener(Unmarshaller.Listener listener)
この Unmarshaller
に非整列化イベントコールバックUnmarshaller.Listener
を登録します。
各 Unmarshaller に Listener は 1 つだけです。Listener を設定すると、前に設定されていた Listener と置き換わります。Listener に null を設定することにより、現在の Listener の登録を解除できます。
listener
- この Unmarshaller
に非整列化イベントコールバックを提供するUnmarshaller.Listener getListener()
この Unmarshaller
に登録された Unmarshaller.Listener
を返します。
Unmarshaller.Listener
、またはこの Unmarshaller に登録されている Listener がない場合 null
。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.