クラス StaxEventItemReader<T>

実装されたすべてのインターフェース:
ResourceAwareItemReaderItemStream<T>ItemReader<T>ItemStreamItemStreamReader<T>org.springframework.beans.factory.InitializingBean

public class StaxEventItemReader<T> extends AbstractItemCountingItemStreamItemReader<T> implements ResourceAwareItemReaderItemStream<T>, org.springframework.beans.factory.InitializingBean
StAX に基づく XML 入力を読み取るためのアイテムリーダー。

入力 XML ドキュメントから、処理対象のレコードに対応するフラグメントを抽出します。フラグメントは、スタンドアロン XML ドキュメントのようにさらに処理できるように、StartDocument および EndDocument イベントでラップされます。

実装はスレッドセーフではありません。

作成者:
Robert Kasanicky, Mahmoud Ben Hassine, Glenn Renfro
  • フィールドの詳細

    • DEFAULT_ENCODING

      public static final StringSE DEFAULT_ENCODING
  • コンストラクターの詳細

    • StaxEventItemReader

      public StaxEventItemReader()
  • メソッドの詳細

    • setStrict

      public void setStrict(boolean strict)
      厳格モードでは、入力リソースが存在しない場合、リーダーは AbstractItemCountingItemStreamItemReader.open(org.springframework.batch.item.ExecutionContext) で例外をスローします。
      パラメーター:
      strict - デフォルトで true
    • setResource

      public void setResource(org.springframework.core.io.Resource resource)
      次で指定:
      インターフェース ResourceAwareItemReaderItemStream<T>setResource 
    • setUnmarshaller

      public void setUnmarshaller(org.springframework.oxm.Unmarshaller unmarshaller)
      パラメーター:
      unmarshaller - レコードに対応する xml フラグメントをオブジェクトにマップします
    • setFragmentRootElementName

      public void setFragmentRootElementName(StringSE fragmentRootElementName)
      パラメーター:
      fragmentRootElementName - フラグメントのルート要素の名前
    • setFragmentRootElementNames

      public void setFragmentRootElementNames(StringSE[] fragmentRootElementNames)
      パラメーター:
      fragmentRootElementNames - フラグメントのルート要素の名前のリスト
    • setXmlInputFactory

      public void setXmlInputFactory(XMLInputFactorySE xmlInputFactory)
      XMLInputFactorySE を設定してください。
      パラメーター:
      xmlInputFactory - 使用対象
    • setEncoding

      public void setEncoding(@Nullable StringSE encoding)
      入力ファイルに使用するエンコーディングを設定します。デフォルトは DEFAULT_ENCODING です。
      パラメーター:
      encoding - 使用されるエンコーディング。null の可能性があります。この場合、XML イベントリーダーは入力ファイルからエンコーディングを自動検出しようとします。
    • afterPropertiesSet

      public void afterPropertiesSet() throws ExceptionSE
      すべてのプロパティを設定した後、ItemReader を実行するために必要なすべての依存関係が提供されていることを確認してください。
      次で指定:
      インターフェース org.springframework.beans.factory.InitializingBeanafterPropertiesSet 
      例外:
      IllegalArgumentExceptionSE - リソース、FragmentDeserializer、FragmentRootElementName が null の場合、またはルート要素が空の場合。
      IllegalStateExceptionSE - リソースが存在しない場合。
      ExceptionSE
      関連事項:
      • InitializingBean.afterPropertiesSet()
    • moveCursorToNextFragment

      protected boolean moveCursorToNextFragment(XMLEventReaderSE reader) throws NonTransientResourceException
      フラグメントルートの StartElement の前にカーソルを移動する責任があります。

      この実装は、次の対応する要素を検索するだけであり、要素の入れ子については考慮しません。複合フラグメントを正しく処理するには、このメソッドをオーバーライドする必要があります。

      パラメーター:
      reader - 次のフラグメントを見つけるために使用される XMLEventReaderSE
      戻り値:
      次のフラグメントが見つかった場合は true、それ以外の場合は false
      例外:
      NonTransientResourceException - カーソルを移動できなかった場合。これは致命的なものとして扱われ、その後の read の呼び出しは null を返します。
    • doClose

      protected void doClose() throws ExceptionSE
      クラスからコピーされた説明: AbstractItemCountingItemStreamItemReader
      AbstractItemCountingItemStreamItemReader.doOpen() で開いたリソースを閉じます。
      次で指定:
      クラス AbstractItemCountingItemStreamItemReader<T>doClose 
      例外:
      ExceptionSE - サブクラスがフレームワークによる解釈のためにチェック済み例外をスローできるようにします
    • doOpen

      protected void doOpen() throws ExceptionSE
      クラスからコピーされた説明: AbstractItemCountingItemStreamItemReader
      入力の読み取りを開始するために必要なリソースを開きます。
      次で指定:
      クラス AbstractItemCountingItemStreamItemReader<T>doOpen 
      例外:
      ExceptionSE - サブクラスがフレームワークによる解釈のためにチェック済み例外をスローできるようにします
    • doRead

      @Nullable protected T doRead() throws IOExceptionSE, XMLStreamExceptionSE
      次のフラグメントに移動し、アイテムにマップします。
      次で指定:
      クラス AbstractItemCountingItemStreamItemReader<T>doRead 
      戻り値:
      データソースが使い果たされた場合、アイテムまたは null 
      例外:
      IOExceptionSE
      XMLStreamExceptionSE
    • jumpToItem

      protected void jumpToItem(int itemIndex) throws ExceptionSE
      クラスからコピーされた説明: AbstractItemCountingItemStreamItemReader
      指定されたアイテムインデックスに移動します。AbstractItemCountingItemStreamItemReader.doRead() を使用して入力を再読み取りするよりも効率的に特定のインデックスに移動する方法がある場合、サブクラスはこのメソッドをオーバーライドする必要があります。
      オーバーライド:
      クラス AbstractItemCountingItemStreamItemReader<T>jumpToItem 
      パラメーター:
      itemIndex - ジャンプするアイテムのインデックス(0 ベース)。
      例外:
      ExceptionSE - サブクラスがフレームワークによる解釈のためにチェック済み例外をスローできるようにします
    • isFragmentRootElementName

      protected boolean isFragmentRootElementName(QNameSE name)