我有orbitz(全球酒店分销系统)xsd架构,并希望从这些xsd文件生成c#.Net类。
当我使用Xsd.Exe或XSD2Code或其他东西时,生成的类会将复杂类型从导入的文件复制到内部,因此多个文件具有相同的类。
我很困惑,该怎么办?
您可以从以下链接下载xsd架构文件。我需要在“hotel”文件夹中使用c#类的xsd文件。
生成xsd文件后,请将这些.cs文件添加到项目中并查看错误。
谢谢
XSD FILES => http://rapidshare.com/files/1062702005/orbitz-pws-schemas-1.42.zip
答案 0 :(得分:3)
您的方案与我发布的this solution非常相似,也与SO有关。我也为你的场景尝试过,我得到的代码可以正常编译。
您的问题与xsd.exe中的限制有关。解决方法是以这样的方式重构XSD:它使用最少数量的XSD文件(不使用xsd:include)捕获您想要处理的所有范围,然后运行生成器。
在您的情况下,这就是您所拥有的:
这就是重构的XSD的样子:
xsd.exe命令行看起来像这样(省略完整路径):
xsd.exe Vendor.xsd Hotel.xsd Air.xsd DynamicPackaging.xsd Car.xsd Common.xsd /language:CS /classes /out:xsd2code
生成的代码编译没有任何问题。
答案 1 :(得分:2)
感谢Petru,我通过另一个频道找到了答案。
我将文件放入同一文件夹,并将导入文件位置更改为同一文件夹,因为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_precancel_RQ.xsd hotel_precancel_RS.xsd hotel_deals_RQ.xsd \ hotel_deals_RS.xsd