2010-11-14 32 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響應。

希望這會有所幫助。