0

データベースから一連のエンティティ クラスに参照データをインポートするタスクが割り当てられました。単純なエンティティ クラスの 1 つの例を次に示します。

public class CountryList
{
    public CountryList()
    {
        this.Countries = new List<Country>();           
    }

    public IList<Country> Countries { get; private set; }
}

XML ファイルの作成は私の責任ではありません。ただし、必要な形式を指定するためにスキーマ (XSD ファイル) を提供するの.

これまでのところ、必要なクラス/メンバーに[DataContract]/で注釈を付け、次のコマンドを[DataMember]使用svcutilして一連の XSD ファイルを生成しようとしました。

svcutil /t:metadata /dconly MyProject.dll

これにより、10 個の個別の XSD ファイルに多くのものが生成されます。関心のあるエンティティのみを指定してすべてをスリム化する方法が見つかりませんでした。(インポートする必要があるのは一部の参照データのみであり、XSD に含める必要のないエンティティ クラスがたくさんあります)。

別の方法として、XML ファイルから逆シリアル化する方法に関するこの記事を見つけました。book一見非常に単純に見えますが、この例のクラスの XSD ファイルはどのように生成されるのでしょうか?

4

2 に答える 2

1

xsd.exe(またはを使用するのではなく) コードを使用して XSD を生成する方が、はるかにクリーンであることが判明しましたsvcutil.exe。私が従った手順は次のとおりです。

  1. このような新しいコンソール アプリケーションを作成しますStreamWriterが、コンソールの代わりにファイルに出力するために a を使用します。結果として得られる XSD には、必要なエンティティだけが含まれ、それ以上はありません。[DataContract]/属性により、[DataMember]XSD コンストラクトはコードと同じ名前になります。

  2. Eclipse を使用して、このように XSD からサンプル XML を生成します。

  3. このようなコードを使用して、XML ファイルを必要なエンティティに逆シリアル化します。

于 2013-05-01T14:38:48.437 に答える