概要 | パッケージ | クラス | 階層ツリー | 非推奨 API | 索引 | ヘルプ
openGion 5.1.6.0
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

## org.opengion.fukurou.xml
クラス HybsXMLHandler

    java.lang.Object
      org.xml.sax.helpers.DefaultHandler
          org.opengion.fukurou.xml.HybsXMLHandler

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

    public class HybsXMLHandler

extends DefaultHandler

このクラスは、拡張オラクル XDK形式のXMLファイルを処理するハンドラです。 オラクルXDK形式のXMLとは、下記のような ROWSET をトップとする ROW の 集まりで１レコードを表し、各ROWには、カラム名をキーとするXMLになっています。 <ROWSET> <ROW num="1"> <カラム1>値1</カラム1> ･･･ <カラムn>値n</カラムn> </ROW> ･･･ <ROW num="n"> ･･･ </ROW> <ROWSET> この形式であれば、XDK(Oracle XML Developer's Kit)を利用すれば、非常に簡単に データベースとXMLファイルとの交換が可能です。 XDK(Oracle XML Developer's Kit) 拡張XDK形式とは、ROW 以外に、SQL処理用タグ(EXEC_SQL)を持つ XML ファイルです。 また、登録するテーブル(table)を ROWSETタグの属性情報として付与することができます。 (大文字小文字に注意) これは、オラクルXDKで処理する場合、無視されますので、同様に扱うことが出来ます。 この、EXEC_SQL は、それそれの XMLデータをデータベースに登録する際に、 SQL処理を自動的に流す為の、SQL文を記載します。 この処理は、イベント毎に実行される為、その配置順は重要です。 このタグは、複数記述することも出来ますが、BODY部には、１つのSQL文のみ記述します。 <ROWSET tableName="XX" > <EXEC_SQL> 最初に記載して、初期処理（データクリア等）を実行させる。 delete from GEXX where YYYYY </EXEC_SQL> <MERGE_SQL> このSQL文で UPDATEして、結果が０件ならINSERTを行います。 update GEXX set AA=[AA] , BB=[BB] where CC=[CC] </MERGE_SQL> <ROW num="1"> <カラム1>値1</カラム1> ･･･ <カラムn>値n</カラムn> </ROW> ･･･ <ROW num="n"> ･･･ </ROW> <EXEC_SQL> 最後に記載して、項目の設定(整合性登録)を行う。 update GEXX set AA='XX' , BB='YY' where CC='ZZ' </EXEC_SQL> <ROWSET> DefaultHandler クラスを拡張している為、通常の処理と同様に、使用できます。 InputSource input = new InputSource( reader ); HybsXMLHandler hndler = new HybsXMLHandler(); SAXParserFactory f = SAXParserFactory.newInstance(); SAXParser parser = f.newSAXParser(); parser.parse( input,hndler ); また、上記の処理そのものを簡略化したメソッド:parse( Reader ) を持っているため、 通常そのメソッドを使用します。 HybsXMLHandler には、TagElementListener をセットすることができます。 これは、ROW 毎に 内部情報を TagElement オブジェクト化し、action( TagElement ) が呼び出されます。この Listener を介して、１レコードずつ処理することが 可能です。

バージョン
  4.0
作成者
  Kazuhiko Hasegawa
導入されたバージョン:
  JDK5.0,

フィールドの概要
`static String` | `EXEC_SQL` このハンドラで取り扱えるタグ名 "EXEC_SQL"
`static String` | `MERGE_SQL` このハンドラで取り扱えるタグ名 "MERGE_SQL"
`static String` | `ROW` このハンドラで取り扱えるタグ名 "ROW"
`static String` | `ROW_NUM` このハンドラで取り扱える ROWタグの属性 "num"
`static String` | `ROWSET` このハンドラのトップタグ名 "ROWSET"
`static String` | `ROWSET_TABLE` このハンドラで取り扱える ROWSETタグの属性

コンストラクタの概要
`HybsXMLHandler()`

メソッドの概要
`void` | `characters(char[] buffer, int start, int length)` 要素内の文字データの通知を受け取ります。
`void` | `endElement(String namespace, String localName, String qname)` 要素の終了通知を受け取ります。
`void` | `parse(Reader reader)` パース処理を行います。
`void` | `setDefaultMap(Map<String,String> map)` TagElement オブジェクトを作成する時の 初期カラム/値を設定します。
`void` | `setTagElementListener(TagElementListener listener)` 内部に TagElementListener を登録します。
`void` | `startElement(String namespace, String localName, String qname, Attributes attributes)` 要素の開始通知を受け取ります。

クラス org.xml.sax.helpers.DefaultHandler から継承されたメソッド
`endDocument, 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`

フィールドの詳細

### ROWSET

    public static final String ROWSET

  このハンドラのトップタグ名 "ROWSET"

  関連項目:
    定数フィールド値

### ROWSET_TABLE

    public static final String ROWSET_TABLE

  このハンドラで取り扱える ROWSETタグの属性

  関連項目:
    定数フィールド値

### ROW

    public static final String ROW

  このハンドラで取り扱えるタグ名 "ROW"

  関連項目:
    定数フィールド値

### ROW_NUM

    public static final String ROW_NUM

  このハンドラで取り扱える ROWタグの属性 "num"

  関連項目:
    定数フィールド値

### EXEC_SQL

    public static final String EXEC_SQL

  このハンドラで取り扱えるタグ名 "EXEC_SQL"

  関連項目:
    定数フィールド値

### MERGE_SQL

    public static final String MERGE_SQL

  このハンドラで取り扱えるタグ名 "MERGE_SQL"

  関連項目:
    定数フィールド値

コンストラクタの詳細

### HybsXMLHandler

    public HybsXMLHandler()

メソッドの詳細

### parse

    public void parse(Reader reader)

  パース処理を行います。 通常のパース処理の簡易メソッドになっています。

  パラメータ:
    `reader` - Reader

### setTagElementListener

    public void setTagElementListener(TagElementListener listener)

  内部に TagElementListener を登録します。 これは、<ROW> タグの endElement 処理毎に呼び出されます。 つまり、行データを取得都度、TagElement オブジェクトを作成し、 この TagElementListener の action( TagElement ) メソッドを呼び出します。 何もセットしない、または、null がセットされた場合は、何もしません。

  パラメータ:
    `listener` - TagElementListener

### setDefaultMap

    public void setDefaultMap(Map<String,String> map)

  TagElement オブジェクトを作成する時の 初期カラム/値を設定します。 TagElements オブジェクトは、XMLファイルより作成する為、項目（カラム）も XMLファイルのROW属性に持っている項目と値で作成されます。 このカラム名を、外部から初期設定することが可能です。 その場合、ここで登録したカラム順（Mapに、LinkedHashMap を使用した場合） が保持されます。また、ROW属性に存在しないカラムがあれば、値とともに 初期値として設定しておくことが可能です。 なお、ここでのMapは、直接設定していますので、ご注意ください。

  パラメータ:
    `map` - Map

### characters

    public void characters(char[] buffer,
                           int start,
                           int length)
                    throws SAXException

  要素内の文字データの通知を受け取ります。 インタフェース ContentHandler 内の characters メソッドをオーバーライドしています。 各文字データチャンクに対して特殊なアクション (ノードまたはバッファへのデータの追加、 データのファイルへの出力など) を実行することができます。

  定義:
    インタフェース `ContentHandler` 内の `characters`
  オーバーライド:
    クラス `DefaultHandler` 内の `characters`
  パラメータ:
    `buffer` - char[] XML 文書の文字
    `start` - int 配列内の開始位置
    `length` - int 配列から読み取られる文字数
  例外:
    `SAXException`
  関連項目:
    `DefaultHandler.characters(char[] , int , int )`

### startElement

    public void startElement(String namespace,
                             String localName,
                             String qname,
                             Attributes attributes)
                      throws SAXException

  要素の開始通知を受け取ります。 インタフェース ContentHandler 内の startElement メソッドをオーバーライドしています。 パーサは XML 文書内の各要素の前でこのメソッドを呼び出します。 各 startElement イベントには対応する endElement イベントがあります。 これは、要素が空である場合も変わりません。対応する endElement イベントの前に、 要素のコンテンツ全部が順番に報告されます。 ここでは、タグがレベル３以上の場合は、上位タグの内容として取り扱います。よって、 タグに名前空間が定義されている場合、その属性は削除します。

  定義:
    インタフェース `ContentHandler` 内の `startElement`
  オーバーライド:
    クラス `DefaultHandler` 内の `startElement`
  パラメータ:
    `namespace` - String 名前空間 URI
    `localName` - String 前置修飾子を含まないローカル名。名前空間処理が行われない場合は空文字列
    `qname` - String 前置修飾子を持つ修飾名。修飾名を使用できない場合は空文字列
    `attributes` - Attributes 要素に付加された属性。属性が存在しない場合、空の Attributes オブジェクト
  例外:
    `SAXException`
  関連項目:
    `DefaultHandler.startElement(String , String , String , Attributes )`

### endElement

    public void endElement(String namespace,
                           String localName,
                           String qname)
                    throws SAXException

  要素の終了通知を受け取ります。 インタフェース ContentHandler 内の endElement メソッドをオーバーライドしています。 SAX パーサは、XML 文書内の各要素の終わりにこのメソッドを呼び出します。 各 endElement イベントには対応する startElement イベントがあります。 これは、要素が空である場合も変わりません。

  定義:
    インタフェース `ContentHandler` 内の `endElement`
  オーバーライド:
    クラス `DefaultHandler` 内の `endElement`
  パラメータ:
    `namespace` - String 名前空間 URI
    `localName` - String 前置修飾子を含まないローカル名。名前空間処理が行われない場合は空文字列
    `qname` - String 前置修飾子を持つ XML 1.0 修飾名。修飾名を使用できない場合は空文字列
  例外:
    `SAXException`
  関連項目:
    `DefaultHandler.endElement(String , String , String )`

概要 | パッケージ | クラス | 階層ツリー | 非推奨 API | 索引 | ヘルプ
| openGion 5.1.6.0
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

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