- - PR -
長〜い文字列を解析/組み立てる汎用的なライブラリ
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-25 22:13
表題の通り、「長〜い文字列を解析/組み立てる汎用的なライブラリ」を探しています
仕様はざっとこんな通りです とある他システムのある機能を呼び出すと長〜い文字列が返ってきます。この文字列には枠組みが決まっていて 項目A:nバイト 項目B:pバイト 項目C:qバイト 項目D:rバイト 項目E:sバイト ・ ・ ・ 単純なフラットな項目の並びだけじゃなくて2階層以上の階層構造の繰り返しもあります。 項目A:nバイト 項目B:pバイト 項目C〜Eまでの繰り返し回数:qバイト 項目C:qバイト 項目D:rバイト 項目E:sバイト 項目F〜Hまでの繰り返し回数:tバイト 項目F:uバイト 項目G:vバイト 項目H:wバイト ・ ・ ・ 他システムから返された長〜い文字列をこのような別に定義された枠組みに従って解析し、POJOの形で返してくれるようなものを望んでいます。 逆にPOJOからこの枠組みに従って、長〜い文字列を生成する場合もあります。 現在、このような枠組みの定義が数十〜百数十程度あります。少ないので有ればそれぞれ個別にJavaの処理で書いてもいいのですが、数が結構多いのと今後どんどん追加される可能性もあるので汎用的なライブラリを用いた方がいいと思うのですが、いちから作ると結構難しそうなので、既に何か使えるモノがないかと探しています。 何かいいのがあれば教えて下さい | ||||
|
投稿日時: 2005-06-26 13:50
unibon です。こんにちわ。
#POJO という用語を今まで知らなかったのですが、用語集とかを見て知りました。 一種のシリアライズ・デシリアライズになると思います。たとえば WSDL/XSD なら枠組みはすでにありますが、これだと「長〜い文字列」にはできなさそうですね。WSDL/XSD を利用して、一旦 XML にしてから、それを「長〜い文字列」に変換(あるいはその逆変換)するのはもしかしたらできるかなとも思いますが、それにしても難しそうな気がします。 また、疑問に思ったのはこのような定義は、どう定める(定めてある)のでしょうか。定義の種類が百個あったらそれ用に百個のクラスがあるのでしょうか?それとも正規表現のような文字列が百個あるのでしょうか?クラスだと、リフレクションなどを使わないと自動化が難しそうな気がします。文字列であったとしても、正規表現での $1, $2 などのような仕組みがないと対応付けが難しいような気がします。 | ||||
|
投稿日時: 2005-06-26 16:48
回答じゃないんですが、
COBOLのコピー句みたいなのをJavaで再現したいわけですかね。 | ||||
|
投稿日時: 2005-06-26 19:59
自分も昔はCOBOLerだったのですが、ずいぶん昔のことなのでいい加減ですが、 COBOLのCOPY句はCで言う#includeだと思いますのでちょっと違います。 ま、ここで言う他システムというはCで作られたシステムでこのシステムでは送られてきたメッセージの長さ分mallocしてmcopyして、あとはそれぞれのメッセージの種類ごとに定義されたstructにcastして、個々の項目を取り出しています。逆に個々の項目をくっつけて一つの長いメッセージを作る場合は単純にstructをmcopyです。 ま、Cだから成せる技ですけど、こういうことをJavaで実現するのは本当に難しいですね。 | ||||
|
投稿日時: 2005-06-26 20:04
それもまた悩みのタネです。枠組みの定義は.propertiesのほうが開発はやりやすいのかなと思いますが、POJOを.propertiesを参照して実行時に生成なんてことはできるんでしょうか?無理で有ればpre-compile形式(.propertiesからclassを自動生成する)でもいいんですけど。 | ||||
|
投稿日時: 2005-06-27 09:25
あんまりJavaでそうしたライブラリの存在は聞いたことがないですね・・・。
現実的なやり方としてはその電文をいったんXMLに変換するプログラムを作成して、変換後XMLデータバインディングを利用してJavaのオブジェクトに変換する方式でしょうか。 | ||||
|
投稿日時: 2005-06-27 11:33
そうですね、一旦XMLになってしまえばJavaのオブジェクトへのマッピングができそうですね。しかし、そのXMLをどうやって生成するかがミソになりますが・・・ | ||||
|
投稿日時: 2005-06-27 12:39
WebLogic Integration には非XMLファイルをXML形式に変換する Format Builder というツール/ライブラリが付属しています。
http://edocs.beasys.co.jp/e-docs/workshop/docs81/doc/ja_JP/integration/samples/sampleMap.html その目的のためだけにWLIを購入するのではなかなか元が取れませんが、コーディングレスでGUIツールでペケペケっとフォーマットを定義できますのでボリューム次第では検討の余地があるかもしれません。 [ メッセージ編集済み 編集者: インギ 編集日時 2005-06-27 12:40 ] |