淺析C# XmlSerializer概念及作用
談到C# XmlSerializer類自然會聯系到序列化的問題,那么我們首先明白序列化其實就是是將對象轉換為容易傳輸的格式的過程。那么它是如何發揮作用的呢?讓我們來一一講述。
C# XmlSerializer類的理解:
例如,可以序列化一個對象,然后使用 HTTP 通過Internet 在客戶端和服務器之間傳輸該對象。在另一端,反序列化將從該流重新構造對象。
XML序列化僅將對象的公共字段和屬性值序列化為 XML 流。XML 序列化不包括類型信息。例如,如果您有一個存在于 Library 命名空間中的 Book 對象,將不能保證它將會被反序列化為同一類型的對象。
注意:XML 序列化不轉換方法、索引器、私有字段或只讀屬性(只讀集合除外)。若要序列化對象的所有字段和屬性(公共的和私有的),請使用 BinaryFormatter,而不要使用 XML 序列化。
C# XmlSerializer類的使用:
XML序列化中最主要的類是XmlSerializer類,它的最重要的方法是 Serialize 和 Deserialize 方法。XmlSerializer 生成的 XML 流符合萬維網聯合會 (http://www.w3.org/) XML 架構定義語言 (XSD) 1.0 的建議。另外,生成的數據類型符合標題為“XML Schema Part 2: Datatypes”(XML 架構第二部分:數據類型)的文檔。
對象中的數據是用編程語言構造(如類、字段、屬性、基元類型、數組,甚至 XmlElement 或 XmlAttribute 對象形式的嵌入 XML)來描述的。您可以創建自己的用屬性批注的類,或者使用 XML 架構定義工具生成基于現有 XML 架構的類。
C# XmlSerializer類作用原理理解:
如果您有 XML 架構,就可運行 XML 架構定義工具生成一組強類型化為架構并用屬性批注的類。當序列化這樣的類的實例時,生成的 XML 符合 XML 架構。使用這樣的類,就可針對容易操作的對象模型進行編程,同時確保生成的 XML 符合 XML 架構。這是使用 .NET Framework 中的其他類(如 XmlReader 和 XmlWriter 類)分析和寫 XML 流的一種替換方法。(有關使用這些類的更多信息,請參見使用 .NET Framework 中的 XML。)這些類使您可以分析任何 XML 流。與此相反,當需要 XML 流符合已知的 XML 架構時,請使用 XmlSerializer。
屬性控制由 XmlSerializer 類生成的 XML 流,使您可以設置 XML 流的 XML 命名空間、元素名、屬性名等。有關這些屬性和它們如何控制 XML 序列化的更多信息,請參見使用屬性控制 XML 序列化。若想獲得一個列示對所生成的 XML 起控制作用的那些屬性的表,請參見控制 XML 序列化的屬性。
XmlSerializer 類可進一步序列化對象并生成編碼的 SOAP XML 流。生成的 XML 符合標題為“Simple Object Access Protocol (SOAP) 1.1”的萬維網聯合會文檔的第 5 節。有關此過程的更多信息,請參見用 XML 序列化生成 SOAP 消息。
XmlSerializer 類生成由 XML Web services 創建和傳遞給 XML Web services 的 SOAP 消息。若要控制 SOAP 消息,可將屬性應用于 XML Web services 文件 (.asmx) 中的類、返回值、參數和字段。您可以同時使用在“控制 XML 序列化的屬性”中列出的屬性和在“控制編碼的 SOAP 序列化的屬性”中列出的屬性,因為 XML Web services 可以使用文本樣式,也可以使用編碼的 SOAP 樣式。
C# XmlSerializer的相關內容就向你介紹到這里,希望對你了解和學習C# XmlSerializer有所幫助。
【編輯推薦】