2011-06-15 73 views
1

我有一系列相当复杂的xsd模式文件,我想创建它们的c#类。我在Visual Studio 8中使用xsd.exe,并且类生成良好。但是,我想绕过继承,这意味着没有类应该从父类继承。从xsd模式生成没有继承的类

我需要这个,因为我使用这些类创建了一个Web服务作为我的Web服务方法的参数。 Web服务的wsdl为这些子类生成标签。据我了解,SAP在创建Web服务客户端时不接受扩展标签。所以我需要一个解决这个问题的方法。

任何帮助是极大的赞赏。

+0

我不太明白你想要做什么。让我得到这个 - 1)你想从一些XSD生成c#类。 2)然后,您将使用c#类生成Web服务合同。 3)然后让一些SAP组件从合同中生成一个代理?我可以问为什么你用XSD开始这个过程?你在做合同吗? – 2011-06-15 12:18:22

+0

我的web服务根据输入参数返回一个xml文件。我已经有了xsd模式文件来验证我的xml。我的计划是使用类创建相同的分层树结构,并将此类作为参数传递给我的Web服务方法。 – artsince 2011-06-15 14:48:44

+0

好,但既然你知道你的客户端不支持XSD标准的某些区域,也许你应该使用一个不会导致你的web服务合约实现这些区域的类模型。例如,你真的需要公开一个类层次吗? – 2011-06-16 09:15:49

回答

1

XML Schema允许通过xs:extension元素进行继承,这允许您修改基地complexType。将这个XML Schema映射到C#(或Java)时,将其映射到类继承是有意义的。

所以我想你想要做的是,而不是映射到一个xs:extension当遇到一个xs:extension时,你想要而不是复制扩展属性到生成的类,即将所有的超类方法到子-类。我非常怀疑你会找到一个工具,将其作为一个选项,这是一个相当晦涩的要求!

就我个人而言,我会通过将您的XML Schema转换为您想要的结构,然后使用您的架构到C#工具来解决此问题。 XSLT是适合这种转换的技术。但是,您可以使用Linq-to-XML或其他XML操作API编写自己的工具。