• 締切済み

Javaにて複数のxmlファイル内の項目集計

Javaのバッチの設計を行っている中で挙がった要望からの質問です。 『質問』 Javaにて、複数のxmlファイルから、特定の項目の値のみを 一括で検索・集計するライブラリはありますでしょうか? ------------------------------------------------ 例)説明目的でタグ名は日本語表記です test1.xml <商品一覧> <商品> <品名>aaa</品名> <在庫>100</在庫> <販売日>20110826</販売日> </商品> <商品> <品名>bbb</品名> <在庫>200</在庫> <販売日>20110827</販売日> </商品> </商品一覧> test2.xml <商品一覧> <商品> <品名>aaa</品名> <在庫>300</在庫> <販売日>20110827</販売日> </商品> <商品> <品名>ccc</品名> <価格>50</価格> <販売日>20110828</販売日> </商品> </商品一覧> ↓ ここでtest1.xmlとtest2.xmlから ・品名aaaの在庫数の合計を検索したい ・発売日が20110827以降の商品を検索したい ------------------------------------------------ 単純に考えれば「全部読み込んで上から順番に該当分だけをバッファに詰め込んで~」 で済みますが、読み込みたいxmlファイルが数百ファイル、 全部で最大2ギガと膨大であるため、 「確かxmlと条件を指定すればSQLみたく  結果だけを返してくれるライブラリがあったような・・・  でも検索しても有料のツールぐらいしか出てこない。」 で、今回の質問に至ります。 Javaのプログラムにおいて例に挙げた目的に対する手段 またはライブラリについて心当たりがある方、情報よろしくお願い致します。 ※手段またはライブラリの存在有無の質問であり、  「○○というのがあるけど今回の目的だと処理が重くなりすぎて使い物にならない」  という事でも構いません。 ※勤務中は書き込みできない為、返信は翌日の夜以降となります。

みんなの回答

  • aton
  • ベストアンサー率47% (160/334)
回答No.2

目的がはっきりわからないのですが,「複数のxmlファイルから、特定の項目の値のみを一括で検索・集計する」機能は,システムの中に含まれるものなのでしょうか? それともシステムの開発を便利に進めるための機能であり,システム自体には含まれないのでしょうか? メモリ上に読み込まずにご質問のようなことをしたいのであれば,通常は XML DBMS を利用することになると思います。 http://en.wikipedia.org/wiki/XML_database にあるとおり,オープンソースの XML DBMS もいくつかありますし,Javaから使うのであればXQJをサポートしているものであれば(実装がJavaでなくても)問題ないと思われます。XPathはXQueryに包含されてますし。 ただ完成するシステムの中に入れるのであれば,DBMSを入れるというのは当然設計上の大きな判断ポイントの一つになると思われるので,どれを採用するか/そもそも採用するか否かまで含めて,当然慎重に検討すべき事項かと思います(本来ならば設計の途中ではなく初期段階で検討する項目のように思われるので,冒頭の疑問を感じた次第です)。 いずれにせよ性能や機能などの評価を十分されることをお勧めします。

noname#147388
noname#147388
回答No.1

XPATH のことですね > SQLみたく~ でもあれってdocumentを全部読み込んでたきがする。 XMLBeans JAXA とかだったかな有名どころは

関連するQ&A