XSD.EXE在文件具有交叉引用时生成多个元素时出错

XSD.EXE在文件具有交叉引用时生成多个元素时出错,xsd,xsd.exe,xsd-validation,xsd2code,xsdobjectgen,Xsd,Xsd.exe,Xsd Validation,Xsd2code,Xsdobjectgen,我有orbitz(全球酒店分发系统)xsd模式,希望从这些xsd文件生成c#.Net类 当我使用Xsd.Exe或xsd2代码或其他东西时,生成的类将复杂类型从导入的文件复制到内部,因此多个文件具有相同的类 我很困惑,该怎么办 您可以从下面的链接下载xsd模式文件。我需要在“hotel”文件夹中使用xsd文件的c#类 生成xsd文件后,请将这些.cs文件添加到项目中并查看错误 谢谢 XSD文件=>http://rapidshare.com/files/1062702005/orbitz-pws-s

我有orbitz(全球酒店分发系统)xsd模式,希望从这些xsd文件生成c#.Net类

当我使用Xsd.Exe或xsd2代码或其他东西时,生成的类将复杂类型从导入的文件复制到内部,因此多个文件具有相同的类

我很困惑,该怎么办

您可以从下面的链接下载xsd模式文件。我需要在“hotel”文件夹中使用xsd文件的c#类

生成xsd文件后,请将这些.cs文件添加到项目中并查看错误

谢谢


XSD文件=>http://rapidshare.com/files/1062702005/orbitz-pws-schemas-1.42.zip

您的场景与我发布的场景非常相似,也是如此。我也为您的场景尝试过它,我得到了正确编译的生成代码

您的问题与xsd.exe中的限制有关。解决方法是重构XSD,使其能够使用最少数量的XSD文件(不使用XSD:include)捕获您想要处理的所有范围,然后运行生成器

就您而言,这就是您所拥有的:

重构后的XSD是这样的:

xsd.exe命令行如下所示(省略了完整路径):


生成的代码编译没有任何问题。

谢谢Petru,我通过另一个渠道找到了答案

我将文件放在同一文件夹中,并将导入文件的位置更改为同一文件夹,因为xsd.exe要求文件位于同一文件夹中

然后下面的命令生成精确的c#库

xsd.exe/c/f/l:cs/namespace:Schema common.xsd hotel_common.xsd hotel_shopping.xsd hotel_rate rules_RQ.xsd hotel_rate rules_RS.xsd 酒店\行程\ RQ.xsd酒店\行程\ RS.xsd酒店\预订\ RQ.xsd 酒店预订RS.xsd酒店取消RQ.xsd酒店取消RS.xsd酒店 precancel酒店RQ.xsd酒店precancel酒店RS.xsd酒店deals酒店RQ.xsd ·酒店交易


运行xsd.exe时使用了哪些选项?我检查了帮助文件,发现没有合适的选项可供设置。xsd.exe PWS/hotel/common.xsd PWS/hotel/hotel_shopping.xsd/c/o:Orbitz我也尝试了/edb选项,但没有任何改变。你“幸运”:。。。因为这在你的情况下有效。我曾经使用xsd,即使在同一个文件夹中也会导致xsd.exe和XmlSchemaSet(在.NET4.0中也是如此)失败。另一方面,摆脱所有xsd:include永远不会失败+谢谢分享!
xsd.exe Vendor.xsd Hotel.xsd Air.xsd DynamicPackaging.xsd Car.xsd Common.xsd /language:CS /classes /out:xsd2code