パッケージ org.opengion.fukurou.xml

クラス XML2TableParser

  • すべての実装されたインタフェース:
    org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

    public class XML2TableParser
    extends org.xml.sax.helpers.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のタグ名とマッチングする際は、大文字、小文字は区別せずにマッチングされます。
    変更履歴:
    6.3.9.1 (2015/11/27) 修飾子を、なし → private に変更(フィールド)
    バージョン
    4.0
    作成者
    Hiroki Nakamura
    導入されたバージョン:
    JDK5.0,
    • コンストラクタの概要

      コンストラクタ 
      コンストラクタ 説明
      XML2TableParser​(java.io.InputStream is)
      ストリームを指定してパーサーを形成します。
      XML2TableParser​(java.lang.String st)
      XMLの文字列を指定してパーサーを形成します。
    • メソッドの概要

      すべてのメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      void characters​(char[] ch, int offset, int length)
      テキストデータ読み込み時に行う処理を定義します。
      void endDocument()
      ドキュメント終了時に行う処理を定義します。
      void endElement​(java.lang.String uri, java.lang.String localName, java.lang.String qName)
      要素の終了タグ読み込み時に行う処理を定義します。
      java.lang.String[] getCols()
      表データのヘッダーの項目名を配列で返します。
      java.lang.String[][] getData()
      表データを2次元配列で返します。
      java.util.concurrent.ConcurrentMap<java.lang.String,​java.lang.String> getRtn()
      属性データをマップ形式で返します。
      void parse()
      XMLのパースを実行します。
      void setReturnCols​(java.lang.String... rKeys)
      属性データのマップの取り出しを行うための属性キーを指定します。
      void setTableCols​(java.lang.String rKey, java.lang.String... cKeys)
      2次元配列データ(表データ)の取り出しを行うための行キーと項目キーを指定します。
      void startElement​(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.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
    • コンストラクタの詳細

      • XML2TableParser

        public XML2TableParser​(java.lang.String st)
        XMLの文字列を指定してパーサーを形成します。
        パラメータ:
        st - XMLデータ(文字列)
        変更履歴:
        6.4.1.1 (2016/01/16) PMD refactoring. It is a good practice to call super() in a constructor
      • XML2TableParser

        public XML2TableParser​(java.io.InputStream is)
        ストリームを指定してパーサーを形成します。
        パラメータ:
        is - XMLデータ(ストリーム)
        変更履歴:
        6.4.1.1 (2016/01/16) PMD refactoring. It is a good practice to call super() in a constructor
    • メソッドの詳細

      • setTableCols

        public void setTableCols​(java.lang.String rKey,
                                 java.lang.String... cKeys)
        2次元配列データ(表データ)の取り出しを行うための行キーと項目キーを指定します。
        パラメータ:
        rKey - 行キー
        cKeys - 項目キー配列(可変長引数)
        変更履歴:
        5.1.6.0 (2010/05/01) rowKeyの親タグが取得できるように対応, 5.1.9.0 (2010/08/01) 可変オブジェクトへの参照の直接セットをコピーに変更
      • setReturnCols

        public void setReturnCols​(java.lang.String... rKeys)
        属性データのマップの取り出しを行うための属性キーを指定します。
        パラメータ:
        rKeys - 属性キー配列(可変長引数)
        変更履歴:
        6.4.3.3 (2016/03/04) 可変長引数でもnullは来る。
      • getCols

        public java.lang.String[] getCols()
        表データのヘッダーの項目名を配列で返します。
        戻り値:
        表データのヘッダーの項目名の配列
        変更履歴:
        5.1.9.0 (2010/08/01) 可変オブジェクトの参照返しをコピー返しに変更
      • getData

        public java.lang.String[][] getData()
        表データを2次元配列で返します。
        戻り値:
        表データの2次元配列
        このメソッドは、nullを返しません
      • getRtn

        public java.util.concurrent.ConcurrentMap<java.lang.String,​java.lang.String> getRtn()
        属性データをマップ形式で返します。 ※ 6.4.3.1 (2016/02/12) で、セットするMapを、ConcurrentHashMap に置き換えているため、 key,value ともに、not null制限が入っています。
        戻り値:
        属性データのマップ(not null制限)
        変更履歴:
        6.4.3.3 (2016/03/04) 戻すMapが、not null制限つきであることを示すため、ConcurrentMap に置き換えます。
      • parse

        public void parse()
        XMLのパースを実行します。
      • startElement

        public void startElement​(java.lang.String uri,
                                 java.lang.String localName,
                                 java.lang.String qName,
                                 org.xml.sax.Attributes attributes)
        要素の開始タグ読み込み時に行う処理を定義します。
        定義:
        startElement インタフェース内 org.xml.sax.ContentHandler
        オーバーライド:
        startElement クラス内 org.xml.sax.helpers.DefaultHandler
        パラメータ:
        uri - 名前空間URI。要素が名前空間 URIを持たない場合、または名前空間処理が行われない場合は空文字列
        localName - 接頭辞を含まないローカル名。名前空間処理が行われない場合は空文字列
        qName - 接頭辞を持つ修飾名。修飾名を使用できない場合は空文字列
        attributes - 要素に付加された属性。属性が存在しない場合、空の Attributesオブジェクト
        変更履歴:
        5.1.6.0 (2010/05/01) rowKeyの親タグが取得できるように対応, 6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)
      • characters

        public void characters​(char[] ch,
                               int offset,
                               int length)
        テキストデータ読み込み時に行う処理を定義します。
        定義:
        characters インタフェース内 org.xml.sax.ContentHandler
        オーバーライド:
        characters クラス内 org.xml.sax.helpers.DefaultHandler
        パラメータ:
        ch - 文字データ配列
        offset - 文字配列内の開始位置
        length - 文字配列から使用される文字数
        変更履歴:
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs), 6.4.3.3 (2016/03/04) ConcurrentHashMap の not null制限のチェック追加
      • endElement

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

        public void endDocument()
        ドキュメント終了時に行う処理を定義します。
        定義:
        endDocument インタフェース内 org.xml.sax.ContentHandler
        オーバーライド:
        endDocument クラス内 org.xml.sax.helpers.DefaultHandler