.Net Post XML via HTTPS Notes 1 [Convert XSD to .Net Class]

最近公司有一個project是要用另外一間公司的 XML Interface 既Webservice 去做exchange data.
其實只要這間公司提供WSDL 既Address 給我們
這個project 便很容易完成…
很可惜這間公司不願提供WDSL file
所以最後便要自己學怎樣在VB.Net 入面post XML 去HTTP 了

便這了這篇筆記了

還記得之前用WSDL時
當我Add 了Service Reference Visual Studio 便會自動產生了和這 Web service 有關的 .NET Object 和Connection End Point
一切都十分方便…

現在所有事都要自己Handle 感到有點煩惱…
等一個STEP 便是要找 方法把
Developer Guide 入面的XSD 轉做 .Net Object
或者你要自己寫一些CLASSES 出來
去做一些 function 可以return 到XML OUTPUT 可以Match 到
Developer Guide 入面你需要POST的 XML Rule.

以下是我的做法

首先你要找到這個XSD.EXE file
在我的電腦入面是在以下的directory
C:Program FilesMicrosoft SDKsWindowsv6.0ABin

或者你可以試試 SEARCH
xsd.exe” 之後copy 這個檔案去另一個location
或到”xsd.exe“後便用Command Prompt
[我將這個.EXE copy 到 裝有 xsd 檔案的 directory 入面 (這樣可以方便自己打小一些path)]

之後開啓command prompt
Start“-> “Run“-> Type “cmd” ->Press “Enter
在command prompt 入面
進入有 “xsd.exe” 的 directory 入面
之後打以下的Command 你便可以create 一個 class base on 這個xsd 檔案了
MyXMLObjNameSpace 是我想這個Class 用的namespace.
XMLToExampleCLass.xsd 是我轉的xsd file.
我用的 language 是 VB.NET

VB
xsd.exe –cl:vbn:MyXMLObjNameSpace XMLToExampleCLass.xsd

C#
xsd.exe -c -l:c# -n:MyXMLObjNameSpace XMLToExampleCLass.xsd

xsd.exe -c[-c mean general Class] -l:[Language Name e.g. c#/vb] -n:[Namespace] [XSD file name]

如果你的XSD 檔案不是 proper define command prompt 便會出示一些error message 說出那裡出現問題就好像下面一樣

這樣你便要看清楚你的XSD 檔案是否Well define 了

如果你的xsd 檔案是沒有問題
他便會出現…
Writing file “C:pathXMLToExampleCLass.vb”

當你完成之後只要COPY 這個VB 檔案到你的VB project
之後imports 這個namespace 你便可以使用這個class 了

E.G.
VB
Imports MyProgram.MyXMLObjNameSpace
C#
using MyProgram.MyXMLObjNameSpace;

Hope you find it useful.
如果你有更好的方法, 歡迎大家一齊來研究研究

Leave a Reply