.Net Post XML via HTTPS Notes 2 [Convert Class object to XML]

上一篇筆記示範了怎麼把XSD 轉成.NET CLASSES
 .Net Post XML via HTTPS Notes 1 [Convert XSD to .Net Class]
今日我們便可以利用上次Generate 出來的 classes
來建立一些我們需要用到的Object 了
最重要既一個步驟是 要在 Class 上 加入之前create 的 namespace.

當大家建立好要用的object 時
我們便可以開始了

首先我們要加入一些Reference
Imports System.Xml.Serialization 
Imports System.IO Imports System.Text

我們要建立一個 XmlSerializer Object 要輸入的parameter 是你將要Convert 的 Object Type
E.G. ‘我要convert 的Class 是
Dim ClassToBeConvert as New ClassNameOfTheObj
‘—- 當你改好這個Class 入面的 Properties 後 我們便可以轉這個Class 做XML String 了
Dim ConvertToXmlString As New StringBuilder ‘這個用來 Store這個XML String 的

Dim xSerializer as New XmlSerializer(GetType(ClassNameOfTheObj))
Dim sw as New StringWriter(CovertToXMLString)
xSerializer.Serialize(sw, ClassToBeConvert )
sw.Close()

MsgBox(ConvertToXmlString .ToString) ‘這便會POPUP 這個轉CLASS 的XML STRING 了

由於這個XML Interface 要我 post XML String 到這個HTTPS
所以如果我直接把剛剛 convert 好的 XML String post 去HTTPS
會有Exception 出現的
因為這個剛剛Convert 出來的XML 是一個Well Form的 XML
[這個XML String 會 contain string 的 format 所以便會有space 和 隔行]
所以會有自動隔行 [vbCrLf] 的情況出現…
“Specified value has invalid CRLF characters. Parameter name: value”

解決的方法亦都是很簡單
只要使用 String.Replace這個function便可
E.G.MsgBox(ConvertToXmlString .ToString.Replace(vbCrLf, “”)) ‘這便會POPUP 這個轉CLASS 的XML STRING 了
這樣我們便有了一個可以在HTTPS 上Post 的 XML String了

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

Leave a Reply