openGionopenGion
5.0.2.0

org.opengion.fukurou.xml
クラス HybsXMLHandler

java.lang.Object
  上位を拡張 org.xml.sax.helpers.DefaultHandler
      上位を拡張 org.opengion.fukurou.xml.HybsXMLHandler
すべての実装されたインタフェース:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

public class HybsXMLHandler
extends org.xml.sax.helpers.DefaultHandler

このクラスは、拡張オラクル XDK形式のXMLファイルを処理するハンドラです。 オラクルXDK形式のXMLとは、下記のような ROWSET をトップとする ROW の 集まりで1レコードを表し、各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部には、1つのSQL文のみ記述します。 <ROWSET tableName="XX" > <EXEC_SQL> 最初に記載して、初期処理(データクリア等)を実行させる。 delete from GEXX where YYYYY </EXEC_SQL> <MERGE_SQL> このSQL文で UPDATEして、結果が0件なら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 を介して、1レコードずつ処理することが 可能です。

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

フィールドの概要
static java.lang.String EXEC_SQL
          このハンドラで取り扱えるタグ名 "EXEC_SQL"
static java.lang.String MERGE_SQL
          このハンドラで取り扱えるタグ名 "MERGE_SQL"
static java.lang.String ROW
          このハンドラで取り扱えるタグ名 "ROW"
static java.lang.String ROW_NUM
          このハンドラで取り扱える ROWタグの属性 "num"
static java.lang.String ROWSET
          このハンドラのトップタグ名 "ROWSET"
static java.lang.String ROWSET_TABLE
          このハンドラで取り扱える ROWSETタグの属性
 
コンストラクタの概要
HybsXMLHandler()
           
 
メソッドの概要
 void characters(char[] buffer, int start, int length)
          要素内の文字データの通知を受け取ります。
 void endElement(java.lang.String namespace, java.lang.String localName, java.lang.String qname)
          要素の終了通知を受け取ります。
 void parse(java.io.Reader reader)
          パース処理を行います。
 void setDefaultMap(java.util.Map<java.lang.String,java.lang.String> map)
          TagElement オブジェクトを作成する時の 初期カラム/値を設定します。
 void setTagElementListener(TagElementListener listener)
          内部に TagElementListener を登録します。
 void startElement(java.lang.String namespace, java.lang.String localName, java.lang.String qname, org.xml.sax.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 java.lang.String ROWSET
このハンドラのトップタグ名 "ROWSET"

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

ROWSET_TABLE

public static final java.lang.String ROWSET_TABLE
このハンドラで取り扱える ROWSETタグの属性

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

ROW

public static final java.lang.String ROW
このハンドラで取り扱えるタグ名 "ROW"

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

ROW_NUM

public static final java.lang.String ROW_NUM
このハンドラで取り扱える ROWタグの属性 "num"

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

EXEC_SQL

public static final java.lang.String EXEC_SQL
このハンドラで取り扱えるタグ名 "EXEC_SQL"

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

MERGE_SQL

public static final java.lang.String MERGE_SQL
このハンドラで取り扱えるタグ名 "MERGE_SQL"

関連項目:
定数フィールド値
コンストラクタの詳細

HybsXMLHandler

public HybsXMLHandler()
メソッドの詳細

parse

public void parse(java.io.Reader reader)
パース処理を行います。 通常のパース処理の簡易メソッドになっています。

パラメータ:
reader - Reader

setTagElementListener

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

パラメータ:
listener - TagElementListener

setDefaultMap

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

パラメータ:
map - Map

characters

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

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

startElement

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

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

endElement

public void endElement(java.lang.String namespace,
                       java.lang.String localName,
                       java.lang.String qname)
                throws org.xml.sax.SAXException
要素の終了通知を受け取ります。 インタフェース ContentHandler 内の endElement メソッドをオーバーライドしています。 SAX パーサは、XML 文書内の各要素の終わりにこのメソッドを呼び出します。 各 endElement イベントには対応する startElement イベントがあります。 これは、要素が空である場合も変わりません。

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

openGion 5.0.2.0

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