2011-07-01 17 views
1

私は、かなり大きなXMLファイル(e-commerceオファー)を構築するライブラリに取り組んでいます。ビジネスクラスを使用してCSVデータ(形式が不明)からXMLデータ(固定形式)に変換されます。リフレクションを使用していますか?

私はビジネスクラス(ProductInfo、PriceInfoなど)を使用していますが、その中から結果のXMLを生成します。

私の最近の仕事は、このXMLをCSV入力ファイルから生成できる機能を実装することです。

CSVファイルにはあらかじめ定義された形式はなく、すべてのCSV列を固定XML形式の対応するものにマップするのはユーザーの仕事です(私たちはそれを可能にするアプリケーションを提供しています)。

基本的には、私のビジネスクラスのフィールドの1つに各列を割り当てます。「この列のすべてのデータはProductInfo.ShortDescriptionなどに入ります」。

私たちの書式は将来変更される可能性があります。更新され、拡張され続けるため、可能な限り一般的な実装をしたいと思います。私はと考え

ソリューションは以下の通りです:

  • ライブラリがすべて利用可能/必須フィールド
  • の名前を返します。私たちのユーザーは、私が含む(カスタム属性を実装
  • これらのフィールドにCSVの列をマップしますフィールド名 - 文字列)、ビジネスクラスのすべてのフィールドにそれをマークします。したがって、すべての列をマップしてCSVでデータを送信したら、私のライブラリはProductInfoなどの作成を開始し、入力値を属性名で識別されるフィールドに割り当てます。これは反射によって行われます。

これは良い考えですか?パフォーマンスに関するいくつかの懸念があります(私はリフレクションが遅いことを知っています)。しかし、どのくらいの問題があるかはわかりません。私が知っておくべき他の問題はありますか?より良い選択肢はありますか?

答えて

0

エンドユーザー向けにこれらを処理するWebサービスを設定するだけではどうですか。サービスを通じて公開されているビジネスオブジェクトを変更すると、WSDLサービスのスキーマが自動的に更新されます。これにより、自動的にスキーマを介してデータを強く入力することができます。

+0

これらのXMLファイルは後で送信されますが、それはデスクトップライブラリとアプリケーションですが、それでもローカルで行う必要があります。私は、プロジェクトアーキテクチャーについては言いませんが、これは多くの面では最適ではないと考えられています:)(単にimoではない) –

関連する問題