簡體   English   中英

將 XML 消息反序列化為對象

[英]Deserialize XML Messages to Objects

我正在為使用 HTTP 傳輸 XML 消息的協議編寫客戶端。 它是同步的,因為我形成了一個遵循 DTD 的 XML 文檔,並使用 WebClient class 通過 POST 將其發送到該協議的網關,並且我從遠程服務器獲得了一個 XML 響應消息,指示 ID/狀態事務響應消息

既然我有 DTD,是否可以用它創建類? 對於我的 XML 消息正在執行的每種“操作”類型,有一些可能的響應,並且具有可以由返回的服務器 XML 水合的類將是有利的。

一旦我有了這些類,將來自服務器的 XML 消息反序列化為對象的基本步驟是什么?

將 DTD 轉換為 XSD(不確定是否仍需要此步驟):

免費 DTD 到 XSD 轉換實用程序?

從 XSD 生成 C# class (命令行工具,我就是這樣做的,不確定是否有更好的方法):

http://quickstart.developerfusion.co.uk/quickstart/howto/doc/xmlserialization/XSDToCls.aspx

從 XML 序列化回 class:

http://support.microsoft.com/kb/815813

一旦你有了 xml 字符串,你可以做這樣的事情,其中 T 是你的通用 object。

public static T GetObjectFromXmlString<T>(string xml)
{
    T result = default(T);

    if (string.IsNullOrEmpty(xml))
        return result;

    using (StringReader sr = new StringReader(xml))
    {
        using (XmlTextReader xr = new XmlTextReader(sr))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(T));
            result = (T)serializer.Deserialize(xr);
        }                   
    }

    return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM