パッケージ jakarta.xml.bind

クラス Binder<XmlNode>

  • 型パラメーター:
    XmlNode - テンプレートパラメーター XmlNode は、表現を保持する XML 情報セットのルートインターフェース / クラスです。org.w3c.dom.Node.class の XmlNode 値を最小限サポートするには、バインダーの実装が必要です。Binder 実装は、表現を保持する代替の XML 情報セットをサポートできます。

    public abstract class Binder<XmlNode>
    extends ObjectSE
    XML インフォセットノードと同じ XML ドキュメントを表す Jakarta XML Binding オブジェクト間の同期を有効にします。

    このクラスのインスタンスは、情報セット保存ビューの XML ノードと XML ドキュメントの Jakarta XML Binding 表現との間の関連付けを維持します。2 つのビュー間のナビゲーションは、メソッド getXMLNode(Object) および getJAXBNode(Object) によって提供されます。

    情報セット保存ビューまたはドキュメントの Jakarta XML Binding 表現のいずれかに変更を加えることができますが、他のビューは変更されません。バインダーは、適切なバインダー更新メソッド updateXML(Object, Object) または updateJAXB(Object) を使用して、変更されたビューで行われた変更を他のビューに同期することができます。

    一般的な使用シナリオは次のとおりです。

    • XML ドキュメントを XML 情報セット表現にロードします
    • unmarshal(Object) XML 情報セットビューから Jakarta XML Binding ビュー。(リソースを節約するために、XML インフォセットビューのサブツリーのみを Jakarta XML Binding ビューにアンマーシャリングすることが可能であることに注意してください。)
    • アプリケーションは、XML ドキュメントの Jakarta XML Binding ビューにアクセス / 更新します。
    • updateXML(Object) は、Jakarta XML Binding ビューへの変更を XML インフォセットビューに同期します。更新操作は、元の XML 情報セットを可能な限り保持します (つまり、コメント、PI、..。)

    バインダーインスタンスは、ファクトリメソッド JAXBContext.createBinder() または JAXBContext.createBinder(Class) を使用して作成されます。

    導入:
    1.6、JAXB 2.0
    作成者:
    Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com) Joseph Fialli
    • コンストラクター概要

      コンストラクター  
      修飾子 コンストラクター 説明
      protected Binder()
      派生クラスの何もしないコンストラクター。
    • コンストラクターの詳細

      • Binder

        protected Binder()
        派生クラスの何もしないコンストラクター。
    • メソッドの詳細

      • unmarshal

        public abstract ObjectSE unmarshal​(XmlNode xmlNode)
                                  throws JAXBException
        XML 情報セットビューを Jakarta XML Binding オブジェクトツリーにアンマーシャルします。

        この方法は Unmarshaller.unmarshal(Node) に似ていますが、XML ノードと生成された Jakarta XML Binding オブジェクト間の関連付けを維持し、将来の更新操作 updateXML(Object, Object) または updateJAXB(Object) を可能にする点が追加されています。

        getSchema() が null 以外の場合、xmlNode とその子孫はこの操作中に検証されます。

        このメソッドは、バインダーの JAXBContext に、xmlNode の XML 要素名または型(@xsi:type を介して指定可能)の Jakarta XML Binding マップクラスへのマッピングがない場合に UnmarshalException をスローします。メソッド unmarshal(Object, Class) を使用すると、アプリケーションは、xmlNode をマップする必要がある Jakarta XML Binding マップクラスを指定できます。

        パラメーター:
        xmlNode - XML データのマーシャリングを解除するドキュメント / 要素。
        戻り値:
        Jakarta XML Binding オブジェクトツリーの新しく作成されたルートオブジェクト。
        例外:
        JAXBException - マーシャリング解除中に予期しないエラーが発生した場合
        UnmarshalException - ValidationEventHandler が handleEvent メソッドから false を返す場合、または Binder が XML から Java へのバインディングを実行できない場合。
        IllegalArgumentExceptionSE - ノードパラメーターが null の場合
      • unmarshal

        public abstract <T> JAXBElement<T> unmarshal​(XmlNode xmlNode,
                                                     ClassSE<T> declaredType)
                                              throws JAXBException
        declaredType を Jakarta XML Binding オブジェクトツリーに提供することにより、XML ルート要素を非整列化します。

        宣言された型によるアンマーシャルを実装します

        この方法は Unmarshaller.unmarshal(Node, Class) に似ていますが、XML ノードと生成された Jakarta XML Binding オブジェクト間の関連付けを維持し、将来の更新操作 updateXML(Object, Object) または updateJAXB(Object) を可能にする点が追加されています。

        getSchema() が null 以外の場合、xmlNode とその子孫はこの操作中に検証されます。

        型パラメーター:
        T - 宣言された型
        パラメーター:
        xmlNode - XML データのマーシャリングを解除するドキュメント / 要素。
        declaredType - node の XML データを保持するための適切な Jakarta XML Binding マップクラス。
        戻り値:
        node の JAXBElement 表現
        例外:
        JAXBException - マーシャリング解除中に予期しないエラーが発生した場合
        UnmarshalException - ValidationEventHandler が handleEvent メソッドから false を返す場合、または Binder が XML から Java へのバインディングを実行できない場合。
        IllegalArgumentExceptionSE - 入力パラメーターのいずれかが null の場合
        導入:
        1.6、JAXB 2.0
      • marshal

        public abstract void marshal​(ObjectSE jaxbObject,
                                     XmlNode xmlNode)
                              throws JAXBException
        Jakarta XML Binding オブジェクトツリーを新しい XML ドキュメントにマーシャリングします。

        この方法は Marshaller.marshal(Object, Node) に似ていますが、Jakarta XML Binding オブジェクトと生成された XML ノード間の関連付けを維持し、updateXML(Object, Object)updateJAXB(Object) などの将来の更新操作を可能にする点が追加されています。

        getSchema() が null 以外の場合、マーシャリングされた xml コンテンツはこの操作中に検証されます。

        パラメーター:
        jaxbObject - マーシャリングされるコンテンツツリー。
        xmlNode - パラメーターは、子を受け入れるノードである必要があります。
        例外:
        JAXBException - マーシャリング中に予期しない問題が発生した場合。
        MarshalException - ValidationEventHandler が handleEvent メソッドから false を返す場合、または Binder が jaxbObject (または jaxbObject から到達可能なオブジェクト)をマーシャリングできない場合。
        IllegalArgumentExceptionSE - メソッドパラメーターのいずれかが null の場合
      • getXMLNode

        public abstract XmlNode getXMLNode​(ObjectSE jaxbObject)
        指定された Jakarta XML Binding オブジェクトに関連付けられた XML 要素を取得します。

        Jakarta XML Binding オブジェクトツリーが XML フラグメントに関連付けられると、このメソッドは 2 つのツリー間のナビゲーションを有効にします。

        XML 要素と Jakarta XML Binding オブジェクト間の関連付けは、bind メソッドと update メソッドによって確立されます。この関連付けは部分的であることに注意してください。すべての XML 要素に Jakarta XML Binding オブジェクトが関連付けられているわけではなく、すべての Jakarta XML Binding オブジェクトに XML 要素が関連付けられているわけでもありません。

        パラメーター:
        jaxbObject - Jakarta XML Binding オブジェクトツリーを返した bind または update メソッドへの以前の呼び出しから到達可能なインスタンス。
        戻り値:
        指定された Jakarta XML Binding オブジェクトがこの Binder に認識されていない場合、または XML 要素に関連付けられていない場合は null。
        例外:
        IllegalArgumentExceptionSE - jaxbObject パラメーターが NULL の場合
      • getJAXBNode

        public abstract ObjectSE getJAXBNode​(XmlNode xmlNode)
        指定された XML 要素に関連付けられた Jakarta XML Binding オブジェクトを取得します。

        Jakarta XML Binding オブジェクトツリーが XML フラグメントに関連付けられると、このメソッドは 2 つのツリー間のナビゲーションを有効にします。

        XML 要素と Jakarta XML Binding オブジェクト間の関連付けは、unmarshal、marshal、update メソッドによって確立されます。この関連付けは部分的であることに注意してください。すべての XML 要素に Jakarta XML Binding オブジェクトが関連付けられているわけではなく、すべての Jakarta XML Binding オブジェクトに XML 要素が関連付けられているわけでもありません。

        パラメーター:
        xmlNode - XML 要素
        戻り値:
        指定された XML ノードがこの Binder に認識されていない場合、または Jakarta XML Binding オブジェクトに関連付けられていない場合は null。
        例外:
        IllegalArgumentExceptionSE - ノードパラメーターが null の場合
      • updateXML

        public abstract XmlNode updateXML​(ObjectSE jaxbObject)
                                   throws JAXBException
        Jakarta XML Binding オブジェクトを取得し、関連する XML ノードとその子孫を更新します。

        これは次の便利なメソッドです。

         updateXML( jaxbObject, getXMLNode(jaxbObject));
         
        パラメーター:
        jaxbObject - XML バインディングオブジェクト
        戻り値:
        XML Binding オブジェクトに関連付けられた XML ノード
        例外:
        JAXBException - 対応する XML コンテンツの更新で予期しない問題が発生した場合。
        IllegalArgumentExceptionSE - jaxbObject パラメーターが NULL の場合
      • updateXML

        public abstract XmlNode updateXML​(ObjectSE jaxbObject,
                                          XmlNode xmlNode)
                                   throws JAXBException
        Jakarta XML Binding オブジェクトツリーの変更は、関連する XML 解析ツリーで更新されます。

        この操作は、「インプレース」マーシャリングと考えることができます。違いは、この操作では、まったく新しい XML ツリーを作成する代わりに、XML を可能な限り保持しようとしながら、既存のツリーを更新することです。

        例: Jakarta XML Binding にバインドされていない XML 内の不明な要素 / 属性は変更されません (一方、マーシャリング操作では、含まない新しいツリーが作成されます。)

        副作用として、この操作は XML ノードと Jakarta XML Binding オブジェクト間の関連付けを更新します。

        パラメーター:
        jaxbObject - 変更される可能性のある Jakarta XML Binding オブジェクトツリーのルート
        xmlNode - 更新ターゲット XML 解析ツリーのルート
        戻り値:
        更新された XML ノードを返します。通常、これは xmlNode として渡したノードと同じですが、オブジェクトのタグ名が変更された場合など、異なるオブジェクトになることもあります。
        例外:
        JAXBException - 対応する XML コンテンツの更新で予期しない問題が発生した場合。
        IllegalArgumentExceptionSE - 入力パラメーターのいずれかが null の場合
      • updateJAXB

        public abstract ObjectSE updateJAXB​(XmlNode xmlNode)
                                   throws JAXBException
        XML ノードを取得し、関連する Jakarta XML Binding オブジェクトとその子孫を更新します。

        この操作は、「インプレース」のマーシャリング解除と考えることができます。違いは、まったく新しい Jakarta XML Binding ツリーを作成する代わりに、この操作で既存のツリーを更新し、可能な限り多くの Jakarta XML Binding オブジェクトを再利用することです。

        副作用として、この操作は XML ノードと Jakarta XML Binding オブジェクト間の関連付けを更新します。

        パラメーター:
        xmlNode - XML ノード
        戻り値:
        更新された Jakarta XML Binding オブジェクトを返します。通常、これは以前の marshal(Object,Object) または updateJAXB(Object) メソッドの呼び出しから返されたオブジェクトと同じですが、たとえば XML 要素の名前が変更された場合などは別のオブジェクトである可能性があります。
        例外:
        JAXBException - 対応する Jakarta XML Binding マップコンテンツの更新で予期しない問題が発生した場合。
        IllegalArgumentExceptionSE - ノードパラメーターが null の場合
      • setSchema

        public abstract void setSchema​(SchemaSE schema)
        marshal、unmarshal、update メソッドが XML コンテンツの検証を実行するかどうかを指定します。
        パラメーター:
        schema - 検証を無効にするには、null に設定します。
        関連事項:
        Unmarshaller.setSchema(Schema)
      • getSchema

        public abstract SchemaSE getSchema()
        setSchema(Schema) メソッドによって設定された最後の SchemaSE オブジェクト(null を含む)を取得します。
        戻り値:
        検証用のスキーマオブジェクト、または存在しない場合は null
      • setEventHandler

        public abstract void setEventHandler​(ValidationEventHandler handler)
                                      throws JAXBException
        アプリケーションが ValidationEventHandler を登録できるようにします。

        ValidationEventHandler は、バインダーのアンマーシャル、マーシャル、更新メソッドのいずれかの呼び出し中に検証エラーが発生した場合に、Jakarta XML Binding Provider によって呼び出されます。

        null パラメーターを指定してこのメソッドを呼び出すと、バインダーはデフォルトのデフォルトのイベントハンドラーに戻ります。

        パラメーター:
        handler - 検証イベントハンドラー
        例外:
        JAXBException - イベントハンドラーの設定中にエラーが発生した場合
      • getEventHandler

        public abstract ValidationEventHandler getEventHandler()
                                                        throws JAXBException
        現在のイベントハンドラー、または設定されていない場合はデフォルトのイベントハンドラーを返します。
        戻り値:
        現在の ValidationEventHandler、または設定されていない場合はデフォルトのイベントハンドラー
        例外:
        JAXBException - 現在のイベントハンドラーの取得中にエラーが発生した場合
      • setProperty

        public abstract void setProperty​(StringSE name,
                                         ObjectSE value)
                                  throws PropertyException
        Binder の基礎となる実装で特定のプロパティを設定します。このメソッドは、標準の Jakarta XML Binding で定義されたアンマーシャル / マーシャルプロパティの 1 つ、またはバインダー、アンマーシャル、マーシャルのプロバイダー固有のプロパティを設定するためにのみ使用できます。未定義のプロパティを設定しようとすると、PropertyException がスローされます。サポートされているアンマーシャルプロパティおよびサポートされているマーシャルプロパティを参照してください。
        パラメーター:
        name - 設定するプロパティの名前。この値は、定数フィールドの 1 つまたはユーザー指定の文字列を使用して指定できます。
        value - 設定するプロパティの値
        例外:
        PropertyException - 指定されたプロパティまたは値の処理中にエラーが発生した場合
        IllegalArgumentExceptionSE - name パラメーターが null の場合
      • getProperty

        public abstract ObjectSE getProperty​(StringSE name)
                                    throws PropertyException
        Binder の基礎となる実装で特定のプロパティを取得します。このメソッドは、標準の Jakarta XML Binding で定義されたアンマーシャル / マーシャルプロパティ、またはバインダー、アンマーシャル、マーシャルのプロバイダー固有のプロパティの 1 つを取得するためにのみ使用できます。未定義のプロパティを取得しようとすると、PropertyException がスローされます。サポートされているアンマーシャルプロパティおよびサポートされているマーシャルプロパティを参照してください。
        パラメーター:
        name - 取得するプロパティの名前
        戻り値:
        リクエストされたプロパティの値
        例外:
        PropertyException - 指定されたプロパティまたは値のプロパティ名の取得中にエラーが発生した場合
        IllegalArgumentExceptionSE - name パラメーターが null の場合