1

ラッパー クラスのローカル セットを機関 API に書き込もうとしています (中等教育機関で働いています)。これらのクラスの目的は、リモート サービスからトランスクリプトを安全に取得し、そのサービスがどのように動作するかをプログラマーに抽象化できるようにすることです。サービスがどのように機能するかは非公開ですが、回答が必要な質問は次のとおりです。

各トランスクリプト応答が、それがどの学校から来たかに応じて異なる xml 形式で来る場合、これに対処する方法。30以上あります。

例として: 機関 A は、学生の GPA が |GPA|4.0|/GPA| になるように、ドキュメントの上部のルート近くにタグを持っています。一方、別の機関では、XML のまったく別の部分、下部近く、おそらく 3 人の子の深さにそれがあり、タグに |GradePointAverage|4.0|/GradePointAverage| という名前を付ける場合があります。(Pretend | は xml の山かっこです)

この標準化の欠如に対処する方法について何か提案はありますか?

4

1 に答える 1

3

1 つの共通データ モデルを目指してから、XML からそのデータ モデルに逆シリアル化できる 30 の異なるクラスを目指すべきだと思われます。それらがどれほど異なるかによって、再利用の重要な側面が存在する可能性があり、いくつかの違いをパラメーター化することさえできる場合があります。LINQ to XML を使用すると、任意の 1 つの形式をかなり簡単に解析できます。

少量の「巧妙な」コードではなく、多くの単純なコードを目指します。個々の形式の解析は、かなり簡単で、できれば簡単にテストできるはずです。はい、このコードを書くのは面倒ですが、最終的には簡単に理解でき、必要に応じてフォーマットを簡単に追加できるはずです。

もちろん、XSLT を使用して単一の形式に変換することもできますが、個人的には C# を書きたいと思います :)

これは、共通のデータ モデルを作成できることを前提としています。形式が大きく異なる場合、恐ろしい最小公分母がないと、各ファイルのデータを正確に表すことができない場合があります。優れたデータ モデルを考え出すことは、個々のパーサーを記述するのと同じくらい難しいでしょう。

于 2012-10-25T16:13:00.143 に答える