パッケージ org.opengion.fukurou.xml
クラス XML2TableParser
java.lang.Object
org.xml.sax.helpers.DefaultHandler
org.opengion.fukurou.xml.XML2TableParser
- すべての実装されたインタフェース:
ContentHandler
,DTDHandler
,EntityResolver
,ErrorHandler
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 に変更(フィールド)
- 導入されたバージョン:
- JDK5.0,
-
コンストラクタの概要
コンストラクタコンストラクタ説明ストリームを指定してパーサーを形成します。XMLの文字列を指定してパーサーを形成します。 -
メソッドの概要
修飾子とタイプメソッド説明void
characters
(char[] ch, int offset, int length) テキストデータ読み込み時に行う処理を定義します。void
ドキュメント終了時に行う処理を定義します。void
endElement
(String uri, String localName, String qName) 要素の終了タグ読み込み時に行う処理を定義します。String[]
getCols()
表データのヘッダーの項目名を配列で返します。String[][]
getData()
表データを2次元配列で返します。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
インタフェースから継承されたメソッド org.xml.sax.ContentHandler
declaration
-
コンストラクタの詳細
-
XML2TableParser
XMLの文字列を指定してパーサーを形成します。- パラメータ:
st
- XMLデータ(文字列)- 変更履歴:
- 6.4.1.1 (2016/01/16) PMD refactoring. It is a good practice to call super() in a constructor
-
XML2TableParser
ストリームを指定してパーサーを形成します。- パラメータ:
is
- XMLデータ(ストリーム)- 変更履歴:
- 6.4.1.1 (2016/01/16) PMD refactoring. It is a good practice to call super() in a constructor
-
-
メソッドの詳細
-
setTableCols
2次元配列データ(表データ)の取り出しを行うための行キーと項目キーを指定します。- パラメータ:
rKey
- 行キーcKeys
- 項目キー配列(可変長引数)- 変更履歴:
- 5.1.6.0 (2010/05/01) rowKeyの親タグが取得できるように対応, 5.1.9.0 (2010/08/01) 可変オブジェクトへの参照の直接セットをコピーに変更
-
setReturnCols
属性データのマップの取り出しを行うための属性キーを指定します。- パラメータ:
rKeys
- 属性キー配列(可変長引数)- 変更履歴:
- 6.4.3.3 (2016/03/04) 可変長引数でもnullは来る。
-
getCols
表データのヘッダーの項目名を配列で返します。- 戻り値:
- 表データのヘッダーの項目名の配列
- 変更履歴:
- 5.1.9.0 (2010/08/01) 可変オブジェクトの参照返しをコピー返しに変更
-
getData
表データを2次元配列で返します。- 戻り値:
- 表データの2次元配列
- このメソッドは、nullを返しません
-
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
XMLのパースを実行します。 -
startElement
要素の開始タグ読み込み時に行う処理を定義します。- 定義:
startElement
インタフェース内ContentHandler
- オーバーライド:
startElement
クラス内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
テキストデータ読み込み時に行う処理を定義します。- 定義:
characters
インタフェース内ContentHandler
- オーバーライド:
characters
クラス内DefaultHandler
- パラメータ:
ch
- 文字データ配列offset
- 文字配列内の開始位置length
- 文字配列から使用される文字数- 変更履歴:
- 6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs), 6.4.3.3 (2016/03/04) ConcurrentHashMap の not null制限のチェック追加
-
endElement
要素の終了タグ読み込み時に行う処理を定義します。- 定義:
endElement
インタフェース内ContentHandler
- オーバーライド:
endElement
クラス内DefaultHandler
- パラメータ:
uri
- 名前空間 URI。要素が名前空間 URI を持たない場合、または名前空間処理が行われない場合は空文字列localName
- 接頭辞を含まないローカル名。名前空間処理が行われない場合は空文字列qName
- 接頭辞を持つ修飾名。修飾名を使用できない場合は空文字列
-
endDocument
ドキュメント終了時に行う処理を定義します。- 定義:
endDocument
インタフェース内ContentHandler
- オーバーライド:
endDocument
クラス内DefaultHandler
-