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のタグ名とマッチングする際は、大文字、小文字は区別せずにマッチングされます。
修飾子とタイプ | フィールドと説明 |
---|---|
(package private) Map |
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 |
idList |
(package private) Map |
idMap |
(package private) InputStream |
input |
(package private) boolean |
isInRow |
(package private) int |
pFullTagIdx |
(package private) int |
pTagIdx |
(package private) String |
rowCpKey |
(package private) List |
rows |
(package private) String |
rtnCpKeys |
(package private) Map |
rtnKeyMap |
(package private) Map |
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 |
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)
要素の開始タグ読み込み時に行う処理を定義します。
|
endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning
String rowCpKey
String colCpKeys
Map colCpIdxs
List rows
String[] data
String[] cols
String rtnCpKeys
Map rtnKeyMap
Map rtnMap
boolean isInRow
String curQName
String curFQName
int pFullTagIdx
int pTagIdx
String curId
List idList
Map idMap
final InputStream input
public XML2TableParser(String st)
st
- XMLデータ(文字列)public XML2TableParser(InputStream is)
is
- XMLデータ(ストリーム)public void setTableCols(String rKey, String[] cKeys)
rKey
- 行キーcKeys
- 項目キー配列(可変長引数)5.1.6.0 (2010/05/01) rowKeyの親タグが取得できるように対応 |
5.1.9.0 (2010/08/01) 可変オブジェクトへの参照の直接セットをコピーに変更 |
public void setReturnCols(String[] rKeys)
rKeys
- 属性キー配列(可変長引数)public String[] getCols()
5.1.9.0 (2010/08/01) 可変オブジェクトの参照返しをコピー返しに変更 |
public String[][] getData()
public Map getRtn()
public void parse()
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の親タグが取得できるように対応 |
public void characters(char[] ch, int offset, int length)
characters
インタフェース内 ContentHandler
characters
クラス内 DefaultHandler
ch
- 文字データ配列offset
- 文字配列内の開始位置length
- 文字配列から使用される文字数public void endElement(String uri, String localName, String qName)
endElement
インタフェース内 ContentHandler
endElement
クラス内 DefaultHandler
uri
- 名前空間 URI。要素が名前空間 URI を持たない場合、または名前空間処理が行われない場合は空文字列localName
- 接頭辞を含まないローカル名。名前空間処理が行われない場合は空文字列qName
- 接頭辞を持つ修飾名。修飾名を使用できない場合は空文字列public void endDocument()
endDocument
インタフェース内 ContentHandler
endDocument
クラス内 DefaultHandler
Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.