パッケージ 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のタグ名とマッチングする際は、大文字、小文字は区別せずにマッチングされます。- 変更履歴:
- 6.3.9.1 (2015/11/27) 修飾子を、なし → private に変更(フィールド)
- バージョン
- 4.0
- 作成者
- Hiroki Nakamura
- 導入されたバージョン:
- JDK5.0,
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 XML2TableParser(InputStream is)ストリームを指定してパーサーを形成します。XML2TableParser(String st)XMLの文字列を指定してパーサーを形成します。
-
メソッドの概要
すべてのメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 voidcharacters(char[] ch, int offset, int length)テキストデータ読み込み時に行う処理を定義します。voidendDocument()ドキュメント終了時に行う処理を定義します。voidendElement(String uri, String localName, String qName)要素の終了タグ読み込み時に行う処理を定義します。String[]getCols()表データのヘッダーの項目名を配列で返します。String[][]getData()表データを2次元配列で返します。ConcurrentMap<String,String>getRtn()属性データをマップ形式で返します。voidparse()XMLのパースを実行します。voidsetReturnCols(String... rKeys)属性データのマップの取り出しを行うための属性キーを指定します。voidsetTableCols(String rKey, String... cKeys)2次元配列データ(表データ)の取り出しを行うための行キーと項目キーを指定します。voidstartElement(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
-
-
-
-
コンストラクタの詳細
-
XML2TableParser
public XML2TableParser(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(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(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- 属性キー配列(可変長引数)- 変更履歴:
- 6.4.3.3 (2016/03/04) 可変長引数でもnullは来る。
-
getCols
public String[] getCols()
表データのヘッダーの項目名を配列で返します。- 戻り値:
- 表データのヘッダーの項目名の配列
- 変更履歴:
- 5.1.9.0 (2010/08/01) 可変オブジェクトの参照返しをコピー返しに変更
-
getData
public String[][] getData()
表データを2次元配列で返します。- 戻り値:
- 表データの2次元配列
- このメソッドは、nullを返しません
-
getRtn
public ConcurrentMap<String,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(String uri, String localName, String qName, Attributes attributes)
要素の開始タグ読み込み時に行う処理を定義します。- 定義:
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
public void characters(char[] ch, int offset, int length)テキストデータ読み込み時に行う処理を定義します。- 定義:
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
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
-
-