3

orbitz (グローバル ホテル ディストリビューション システム) の xsd スキーマがあり、これらの xsd ファイルから c#.Net クラスを生成したいと考えています。

Xsd.Exe や XSD2Code などを使用すると、生成されたクラスは、インポートされたファイルから複雑な型を内部にコピーするため、複数のファイルに同じクラスが含まれます。

困った、どうしよう。

以下のリンクから xsd スキーマ ファイルをダウンロードできます。「ホテル」フォルダーにあるxsdファイルのC#クラスが必要です。

xsd ファイルの生成後、これらの .cs ファイルをプロジェクトに追加し、エラーを確認してください。

ありがとう

XSD ファイル =>http://rapidshare.com/files/1062702005/orbitz-pws-schemas-1.42.zip

4

2 に答える 2

3

あなたのシナリオは、私がこのソリューションを投稿したシナリオと非常に同じです。あなたのシナリオでも試してみましたが、適切にコンパイルされるコードが生成されました。

問題は xsd.exe の制限に関係しています。回避策は、最小数の XSD ファイルを使用して (xsd:include を使用せずに) 処理するすべてのスコープをキャプチャするように XSD をリファクタリングしてから、ジェネレーターを実行することです。

あなたの場合、これはあなたが持っているものです:

Orbitz XSD ファイルの関係を示す QT​​Assistant

リファクタリングされた XSD は次のようになります。

XSR リファクタリングされた Orbitz ファイルの関係を示す QT​​Assistant

xsd.exe コマンド ラインは次のようになります (フル パスは省略)。

xsd.exe Vendor.xsd Hotel.xsd Air.xsd DynamicPackaging.xsd Car.xsd Common.xsd /language:CS /classes /out:xsd2code

生成されたコードは問題なくコンパイルされます。

于 2012-08-09T13:12:38.010 に答える
2

ありがとうペトル、私は別のチャンネルで答えを見つけました。

ファイルを同じフォルダーに入れ、インポート ファイルの場所を同じフォルダーに変更しました。これは、xsd.exe がファイルを同じフォルダーに配置する必要があるためです。

次に、以下のコマンドで正確な c# ライブラリが生成されます。

xsd.exe /c /f /l:cs /namespace:Schema common.xsd hotel_common.xsd hotel_shopping.xsd hotel_raterules_RQ.xsd hotel_raterules_RS.xsd hotel_itinerary_RQ.xsd hotel_itinerary_RS.xsd hotel_booking_RQ.xsd hotel_booking_RS.xsd hotel_cancel_RQ.xsd hotel_cancel_RS.xsd hotel. xsd hotel_precancel_RS.xsd hotel_deals_RQ.xsd .\hotel_deals_RS.xsd

于 2012-08-11T09:35:24.413 に答える