2010-11-14 200 views
8

我需要创建将由其他系统使用的Web服务(.NET)。 为了让他们实现将使用我的Web服务的逻辑,我需要为他们的Web服务发送wsdl和XSD文件。如何为Web服务生成XSD文件

WSDL文件是没有问题的,我会从页面的.asmx通过传递WSDL参数获得。 但是我怎样才能为我的Web服务生成适当的XSD文件? 我可以使用XSD.exe工具并将它作为参数传递给.wsdl文件,还是有其他方法?

在此先感谢。

回答

10

您可以使用disco.exe实用程序,它允许您将wsdl和xsd文件保存在磁盘上,以便这些文件可用于生成客户端代理而无需访问WSDL Web地址。

+0

我用这个工具成功地生成了XSD文件,欢呼声。 – buhtla 2010-11-17 11:53:28

+0

我无法从wsdl网址生成xsd。 – arjun 2012-10-15 04:57:20

2

如果您使用Visual Studio(及以上)的专业版,打开一个XML文件时,你会发现一个XML的菜单,这将产生从它的XSD(创建模式)的项目。我相信它在引擎盖下使用xsd.exe

MSDN

+0

当我尝试这个时,我得到以下错误:“提供的xml实例是一个模式或包含一个内联模式,该类不能推断一个模式的模式。” – buhtla 2010-11-16 12:25:58

+0

@buhtla - 显然,模式已经定义。查看XML并查看它是否链接到模式。 – Oded 2010-11-16 13:41:14

+0

我想从WSDL文件生成XSD。 WSDL是从我在Visual Studio中创建的Web服务中自动生成的 - 所以eather Web Service会生成无效的XML(我怀疑)或者出现此错误的其他原因。 – buhtla 2010-11-20 11:27:19

0

您可以在服务URL的末尾添加“?XSD = 1”来获取模式。

即如果你的Web服务URL是 :// my_ws_service:9080 /服务/名称 那么你可以使用 WSDL:// my_ws_service:9080 /服务/名称WSDL ,您可以使用 获取架构:// my_ws_service:9080/service/name?xsd = 1 (注意xsd区分大小写)

希望它有帮助。

0

想我会分享我的解决方案,在我来说,我需要创建一个实际的C#类,所以我可以用它来反序列化的XML响应对于一个给定的端点,其WSDL我救了我的dev的电脑上。

我打开Visual Studio命令提示符和类型如下:

wsdl "name-of-your-file" 

凡名称的 - 你的文件是你保存的WSDL文件的名称。运行该命令应该生成一个C#类,然后您可以在您的客户端应用程序中使用该类来为给定端点反序列化XML SOAP响应。

希望这会有所帮助。