溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET中XML序列化和反序列化常用類和屬性是什么

發(fā)布時間:2022-04-02 10:44:32 來源:億速云 閱讀:166 作者:iii 欄目:開發(fā)技術

這篇“.NET中XML序列化和反序列化常用類和屬性是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“.NET中XML序列化和反序列化常用類和屬性是什么”文章吧。

    序列化和反序列化是指什么?

    序列化(seriallization): 將對象轉化為便于傳輸?shù)臄?shù)據(jù)格式, 常見的序列化格式:二進制格式,字節(jié)數(shù)組,json字符串,xml字符串。
    反序列化(deseriallization):將序列化的數(shù)據(jù)恢復為對象的過程。

    XmlSerializer類

      該類用一種高度松散耦合的方式提供串行化服務。你的類不需要繼承特別的基類,而且它們也不需要實現(xiàn)特別的接口。相反,你只需在你的類或者這些類的公共域以及讀/寫屬性里加上自定義的特性。XmlSerializer通過反射機制讀取這些特性并用它們將你的類和類成員映射到xml元素和屬性(在對象和 XML 文檔之間進行序列化和反序列化操作)。

    .NET-XML序列化和反序列化簡單示例代碼

    using System.IO;
    using System.Xml.Serialization;
     
    namespace Practices.Common
    {
        public class SimpleSerializer
        {
            /// <summary>
            /// Model實體對象序列化為XML字符串
            /// </summary>
            /// <typeparam name="T">對象類型</typeparam>
            /// <param name="t">Model實體對象</param>
            /// <returns></returns>
            public static string SerializeXMLL<T>(T t)
            {
                using (StringWriter sw = new StringWriter())
                {
                    XmlSerializer xmlSerializer = new XmlSerializer(t.GetType());
                    xmlSerializer.Serialize(sw, t);
                    return sw.ToString();
                }
            }
     
            /// <summary>
            /// XML反序列化為對象
            /// </summary>
            /// <typeparam name="T">對象類型</typeparam>
            /// <param name="xml">xml字符串</param>
            /// <returns></returns>
            public static T Deserialize<T>(string xml)
            {
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
                StringReader stringReader = new StringReader(xml);
                return (T)xmlSerializer.Deserialize(stringReader);
            }
     
        }
    }

    XmlTypeAttribute類

       該類主要控制當屬性目標由XML序列化時生成的XML節(jié)點。

    應用示例

    /// <summary>
    /// Envelope
    /// </summary>
    [XmlType(TypeName = "envelope")]
    public class CityRes
    {
        public Header header { get; set; }
     
        public Response response { get; set; }
     
    }

    XmlElementAttribute類

       該類用于指示公共字段或屬性在XML序列化或反序列化包含它們的對象時表示XML元素。

    應用示例

    /// <summary>
    /// Envelope
    /// </summary>
    public class CityRes
    {
        /// <summary>
        /// header
        /// </summary>
        [XmlElement("header")]
        public Header header { get; set; }
     
        /// <summary>
        /// response
        /// </summary>
        [XmlElement("response")]
        public Response response { get; set; }
     
    }

    XmlAttributeAttribute類

      該類指定XML序列化必須將類成員序列化為XML屬性。

    應用示例

    /// <summary>
    /// Version
    /// </summary>
    public class Version
    {
        /// <summary>
        /// port
        /// </summary>
        [XmlAttribute("port")]
        public string port { get; set; }
     
        /// <summary>
        /// host
        /// </summary>
        [XmlAttribute("host")]
        public string host { get; set; }
     
        /// <summary>
        /// text
        /// </summary>
        [XmlAttribute("text")]
        public string text { get; set; }
     
    }

    XmlArrayAttribute類

      該類主要用于XML元素數(shù)組的應用(相當于就是集合的聲明)。

    應用示例

    [XmlArray]
    public Item []Items
    {
       get{return items;}
       set{items = value;}
    }

    XmlTextAttribute類

      當Xml文檔序列化或反序列化時使用該特性修飾的成員會作為XML文本處理。

    應用示例

    [System.Xml.Serialization.XmlTextAttribute()]
    public string[] Text
    {
        get
        {
            return this.textField;
        }
        set
        {
            this.textField = value;
        }
    }

    XmlIgnoreAttribute類

       指示該特性修飾的對象在Xml序列化時不會序列化該特性指定的元素。

    應用示例

    public class TeamGroup
    {
     
       [XmlIgnore]
       public string Comment;
     
       public string GroupName;
    }

    用來控制XML序列化的屬性匯總

    通過將下表中的特性應用于類和類成員,可以控制 XmlSerializer 序列化或反序列化該類的實例的方式。 若要了解這些屬性如何控制 XML 序列化,請參閱使用屬性控制 XML 序列化。

    特性適用對象指定
    XmlAnyAttributeAttribute公共字段、屬性、參數(shù)或返回 XmlAttribute 對象數(shù)組的返回值。反序列化時,將會使用 XmlAttribute 對象填充數(shù)組,而這些對象代表對于架構未知的所有 XML 特性。
    XmlAnyElementAttribute公共字段、屬性、參數(shù)或返回 XmlElement 對象數(shù)組的返回值。反序列化時,將會使用 XmlElement 對象填充數(shù)組,而這些對象代表對于架構未知的所有 XML 元素。
    XmlArrayAttribute公共字段、屬性、參數(shù)或返回復雜對象的數(shù)組的返回值。數(shù)組成員將作為 XML 數(shù)組的成員生成。
    XmlArrayItemAttribute公共字段、屬性、參數(shù)或返回復雜對象的數(shù)組的返回值。可以插入數(shù)組的派生類型。 通常與 XmlArrayAttribute 一起應用。
    XmlAttributeAttribute公共字段、屬性、參數(shù)或返回值。成員將作為 XML 屬性進行序列化。
    XmlChoiceIdentifierAttribute公共字段、屬性、參數(shù)或返回值。可以使用枚舉進一步消除成員的歧義。
    XmlElementAttribute公共字段、屬性、參數(shù)或返回值。字段或屬性將作為 XML 元素進行序列化。
    XmlEnumAttribute作為枚舉標識符的公共字段。枚舉成員的元素名稱。
    XmlIgnoreAttribute公共屬性和公共字段。序列化包含類時,應該忽略屬性或字段。
    XmlIncludeAttribute公共派生類聲明,以及 Web 服務描述語言 (WSDL) 文檔的公共方法的返回值。生成要在序列化時識別的架構時,應該將該類包括在內。
    XmlRootAttribute公共類聲明。控制視為 XML 根元素的屬性目標的 XML 序列化。 使用該屬性可進一步指定命名空間和元素名稱。
    XmlTextAttribute公共屬性和公共字段。屬性或字段應該作為 XML 文本進行序列化。
    XmlTypeAttribute公共類聲明。XML 類型的名稱和命名空間。

    以上就是關于“.NET中XML序列化和反序列化常用類和屬性是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

    xml
    AI