我有這種情況,我在C#中創建了一個Web 服務,我需要使用一個SOAP Web 服務,它會回傳一個XML回應,我需要序列化這個 XML 回應并將其保存到資料庫中的一個表中。
我已經嘗試在Postman中呼叫 XML并且它與
200 OK 狀態
,但我需要如何序列化這個回應并將其保存到資料庫中。
然后我試著寫這個:
public void CreateFilter(Student student)
{
var XML = XmlSerialization <Student> (student);
ConnectDataBase db = new ConnectDataBase();
SqlCommand cmd = new SqlCommand("sp_Student");
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = student.name;
cmd.Parameters.Add("@surname", SqlDbType.VarChar).Value = student.surname;
cmd.Parameters.Add("@subject", SqlDbType.VarChar).Value = student.subject;
cmd.Parameters.Add("@student", SqlDbType.Xml).Value = XML;
}
關于如何從我必須使用的 Web 服務獲取回應,然后序列化我得到的回應,然后將序列化保存在資料庫中的任何想法?
先感謝您
uj5u.com熱心網友回復:
好吧,你真的有幾個選擇。本質上,如果您沒有利用 ORM(如 Hibernate 或類似的),您希望:
- 獲取 XML 有效負載
- 將其反序列化為物件實體,以便您可以使用它
- 挑出你感興趣的資料并持久化
第 2 步本質上是撰寫一個模仿 XML 欄位結構的類(或類樹),然后要求一個庫很好地將 XML 狀態決議為該類的一個實體。這樣就可以輕松地為您作業。
您可以按照以下方式利用本機反序列化:
https://docs.microsoft.com/en-us/dotnet/api/system.xml.serialization.xmlserializer.deserialize?view=net-6.0
或者,只是為了爭論,您也可以使用現代序列化庫。對于 XML 和 C#,沒有太多好的選擇,所以我能想到的主要是 Json.NET:
https://www.newtonsoft.com/json
這個庫雖然主要作為 JSON 的一體化物件映射器推出,但也能夠在 XML 和 Json 之間進行轉換:
https://www.newtonsoft.com/json/help/html/ConvertingJSONandXML.htm
根據本機反序列化器的斗爭程度(定義架構可能有點痛苦,我是對的該死的 SOAP),使用 Json.NET 將 XML 存盤起來,將其轉換為 JSON 可能更容易,然后將該 json 反序列化為物件。
這為您提供了一個不理想的兩步反序列化程序,但這并不是一件壞事,因為您可以使用“不錯的”庫而不必與舊的 xml 序列化內容作斗爭。
選擇真的是你的。我會先給第一個選項一個很好的選擇,然后如果這引起了太多的戰斗,那么你有 Json.NET 可以依靠:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/456832.html
上一篇:VisualStudio2022C#ASP.NETWebforms,在服務器上找不到服務參考文本檔案(HTTP錯誤404.0)
下一篇:org.apache.cxf.transport.http.HTTPException:HTTP回應“415:不支持的媒體型別”
