org.opengion.fukurou.xml

## クラス XML2TableParser

- java.lang.Object
- - org.xml.sax.helpers.DefaultHandler
  - - org.opengion.fukurou.xml.XML2TableParser

- すべての実装されたインタフェース:
    ContentHandler, DTDHandler, EntityResolver, ErrorHandler

      public class XML2TableParser
      extends DefaultHandler

  XML2TableParser は、XMLを表形式に変換するためのXMLパーサーです。 XMLのパースには、SAXを採用しています。 このクラスでは、XMLデータを分解し、2次元配列の表データ、及び、指定されたキーに対応する 属性データのマップを生成します。 これらの配列を生成するためには、以下のパラメータを指定する必要があります。 ①2次元配列データ(表データ)の取り出し 行のキー(タグ名)と、項目のキー一覧(タグ名)を指定することで、表データを取り出します。 具体的には、行キーのタグセットを"行"とみなし、その中に含まれる項目キーをその列の"値"と して分解されます。(行キーがN回出現すれば、N行が生成されます。) もし、行キーの外で、項目キーのタグが出現した場合、その項目キーのタグは無視されます。 また、colKeysにPARENT_TAG、PARENT_FULL_TAGを指定することで、rowKeyで指定されたタグの 直近の親タグ、及びフルの親タグ名(親タグの階層を">[タグA]>[タグB]>[タグC]>"で表現)を 取得することができます。 行キー及び項目キーは、`setTableCols(String, String[])`で指定します。 ②属性データのマップの取り出し 属性キー(タグ名)を指定することで、そのタグ名に対応した値をマップとして生成します。 同じタグ名が複数回にわたって出現した場合、値はアペンドされます。 属性キーは、`setReturnCols(String[])`で指定します。 ※それぞれのキー指定は、大文字、小文字を区別した形で指定することができます。 但し、XMLのタグ名とマッチングする際は、大文字、小文字は区別せずにマッチングされます。
  バージョン
    4.0
  作成者
    Hiroki Nakamura
  導入されたバージョン:
    JDK5.0,

- - ### フィールドの概要

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `(package private) Map<String,Integer>` | `colCpIdxs`
    `(package private) String` | `colCpKeys`
    `(package private) String[]` | `cols`
    `(package private) String` | `curFQName`
    `(package private) String` | `curId`
    `(package private) String` | `curQName`
    `(package private) String[]` | `data`
    `(package private) List<org.opengion.fukurou.xml.XML2TableParser.RowColId>` | `idList`
    `(package private) Map<String,String>` | `idMap`
    `(package private) InputStream` | `input`
    `(package private) boolean` | `isInRow`
    `(package private) int` | `pFullTagIdx`
    `(package private) int` | `pTagIdx`
    `(package private) String` | `rowCpKey`
    `(package private) List<String[]>` | `rows`
    `(package private) String` | `rtnCpKeys`
    `(package private) Map<String,String>` | `rtnKeyMap`
    `(package private) Map<String,String>` | `rtnMap`

  - ### コンストラクタの概要

    コンストラクタ
    コンストラクタと説明
    `XML2TableParser(InputStream is)` ストリームを指定してパーサーを形成します。
    `XML2TableParser(String st)` XMLの文字列を指定してパーサーを形成します。

  - ### メソッドの概要

    メソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `void` | `characters(char[] ch, int offset, int length)` テキストデータ読み込み時に行う処理を定義します。
    `void` | `endDocument()` ドキュメント終了時に行う処理を定義します。
    `void` | `endElement(String uri, String localName, String qName)` 要素の終了タグ読み込み時に行う処理を定義します。
    `String[]` | `getCols()` 表データのヘッダーの項目名を配列で返します。
    `String[][]` | `getData()` 表データを2次元配列で返します。
    `Map<String,String>` | `getRtn()` 属性データをマップ形式で返します。
    `void` | `parse()` XMLのパースを実行します。
    `void` | `setReturnCols(String[] rKeys)` 属性データのマップの取り出しを行うための属性キーを指定します。
    `void` | `setTableCols(String rKey, String[] cKeys)` 2次元配列データ(表データ)の取り出しを行うための行キーと項目キーを指定します。
    `void` | `startElement(String uri, String localName, String qName, Attributes attributes)` 要素の開始タグ読み込み時に行う処理を定義します。

    - ### クラスから継承されたメソッド org.xml.sax.helpers.DefaultHandler

      `endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning`

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### フィールドの詳細

    - #### rowCpKey

          String rowCpKey

    - #### colCpKeys

          String colCpKeys

    - #### colCpIdxs

          Map<String,Integer> colCpIdxs

    - #### rows

          List<String[]> rows

    - #### data

          String[] data

    - #### cols

          String[] cols

    - #### rtnCpKeys

          String rtnCpKeys

    - #### rtnKeyMap

          Map<String,String> rtnKeyMap

    - #### rtnMap

          Map<String,String> rtnMap

    - #### isInRow

          boolean isInRow

    - #### curQName

          String curQName

    - #### curFQName

          String curFQName

    - #### pFullTagIdx

          int pFullTagIdx

    - #### pTagIdx

          int pTagIdx

    - #### curId

          String curId

    - #### idList

          List<org.opengion.fukurou.xml.XML2TableParser.RowColId> idList

    - #### idMap

          Map<String,String> idMap

    - #### input

          final InputStream input

  - ### コンストラクタの詳細

    - #### XML2TableParser

          public XML2TableParser(String st)

      XMLの文字列を指定してパーサーを形成します。
      パラメータ:
        `st` - XMLデータ(文字列)

    - #### XML2TableParser

          public XML2TableParser(InputStream is)

      ストリームを指定してパーサーを形成します。
      パラメータ:
        `is` - XMLデータ(ストリーム)

  - ### メソッドの詳細

    - #### setTableCols

          public void setTableCols(String rKey,
                          String[] cKeys)

      2次元配列データ(表データ)の取り出しを行うための行キーと項目キーを指定します。
      パラメータ:
        `rKey` - 行キー
        `cKeys` - 項目キー
      変更履歴:

        5.1.6.0 (2010/05/01) rowKeyの親タグが取得できるように対応
        5.1.9.0 (2010/08/01) 可変オブジェクトへの参照の直接セットをコピーに変更

    - #### setReturnCols

          public void setReturnCols(String[] rKeys)

      属性データのマップの取り出しを行うための属性キーを指定します。
      パラメータ:
        `rKeys` - 属性キー

    - #### getCols

          public String[] getCols()

      表データのヘッダーの項目名を配列で返します。
      戻り値:
        表データのヘッダーの項目名の配列
      変更履歴:

        5.1.9.0 (2010/08/01) 可変オブジェクトの参照返しをコピー返しに変更

    - #### getData

          public String[][] getData()

      表データを2次元配列で返します。
      戻り値:
        表データの2次元配列

    - #### getRtn

          public Map<String,String> getRtn()

      属性データをマップ形式で返します。
      戻り値:
        属性データのマップ

    - #### parse

          public void parse()

      XMLのパースを実行します。

    - #### startElement

          public void startElement(String uri,
                          String localName,
                          String qName,
                          Attributes attributes)

      要素の開始タグ読み込み時に行う処理を定義します。
      定義:
        `startElement` インタフェース内 `ContentHandler`
      オーバーライド:
        `startElement` クラス内 `DefaultHandler`
      パラメータ:
        `uri` - 名前空間ＵＲＩ。要素が名前空間 ＵＲＩを持たない場合、または名前空間処理が行われない場合は空文字列
        `localName` - 接頭辞を含まないローカル名。名前空間処理が行われない場合は空文字列
        `qName` - 接頭辞を持つ修飾名。修飾名を使用できない場合は空文字列
        `attributes` - 要素に付加された属性。属性が存在しない場合、空の Attributesオブジェクト
      変更履歴:

        5.1.6.0 (2010/05/01) rowKeyの親タグが取得できるように対応

    - #### characters

          public void characters(char[] ch,
                        int offset,
                        int length)

      テキストデータ読み込み時に行う処理を定義します。
      定義:
        `characters` インタフェース内 `ContentHandler`
      オーバーライド:
        `characters` クラス内 `DefaultHandler`
      パラメータ:
        `ch` - 文字データ配列
        `offset` - 文字配列内の開始位置
        `length` - 文字配列から使用される文字数

    - #### endElement

          public void endElement(String uri,
                        String localName,
                        String qName)

      要素の終了タグ読み込み時に行う処理を定義します。
      定義:
        `endElement` インタフェース内 `ContentHandler`
      オーバーライド:
        `endElement` クラス内 `DefaultHandler`
      パラメータ:
        `uri` - 名前空間 URI。要素が名前空間 URI を持たない場合、または名前空間処理が行われない場合は空文字列
        `localName` - 接頭辞を含まないローカル名。名前空間処理が行われない場合は空文字列
        `qName` - 接頭辞を持つ修飾名。修飾名を使用できない場合は空文字列

    - #### endDocument

          public void endDocument()

      ドキュメント終了時に行う処理を定義します。
      定義:
        `endDocument` インタフェース内 `ContentHandler`
      オーバーライド:
        `endDocument` クラス内 `DefaultHandler`

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.