程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 簡述Xml.Serialization如何序列化對象到XML文件

簡述Xml.Serialization如何序列化對象到XML文件

編輯:關於ASP編程

    先簡單描述XML文件的結構如何。

    XML文件中,“元素(Element)”是其基本結構,整個XML文件就是由若干“元素(Element)”組成的。

    下面是一個元素的例子:

    <T Name="Sample">This is Sample</T>

    整個這一串字符稱為“元素(Element)”,它由幾部分組成。T稱為“元素(Element)”的“標簽(Tag)”。一個“元素(Element)”包含開始標簽<T>和結束標簽</T>。標簽內包含“文本(Text)”,本例是This is Sample字符串;或者包含子元素(也就是元素的嵌套)。而Name="Sample"稱為“元素(Element)”的“屬性(Attribute)”,不過“屬性(Attribute)”不是“元素(Element)”的必須的部分,可以沒有,可以有若干個。

    XML文件就是由若干個“元素(Element)”組成的。不過只能有一個“根元素(Root)”,其他的元素都是“根元素(Root)”的子元素,或者是子元素的子元素。

    Xml.Serialization序列化一個對象,就是把對象序列化成一個XML的“元素(Element)”。如果一個類沒有加任何的特性,那麼默認的話,這個類序列化後的“標簽(Tag)”就是這個類的類名,這個類的公共字段和公共屬性都被序列化
    成子元素,子元素的“標簽(Tag)”就是字段名(或者是屬性名),子元素的“文本(Text)”就是字段值(或者是屬性值)。

    通過Xml.Serialization中的一些類,可以給一個類添加一些特性,使得在序列化的時候,能夠實現自己的定制。

    XmlRoot("Settings"),這個表明把類序列化成“根元素(Root)”,“根元素(Root)”的“標簽(Tag)”是Settings而不是原來的類名。注意,一個XML文件中只能有一個“根元素(Root)”。

    XmlElement("T"),這個表明把類或者是字段(屬性)序列化成“元素(Element)”,元素的“標簽(Tag)”是T,而不是原來的類名(字段名或者是屬性名)。

    XmlAttribute("Count"),這個表明把字段(屬性)序列化成“屬性(Attribute)”,屬性名就是字段(屬性)名,屬性值就是字段(屬性)值。這個似乎不能運用在數組字段(屬性)。

    XmlText,這個表明把字段(屬性)序列化成“文本(Text)”,文本值就是字段(屬性)值。不過,一個類中,只能有一個字段(屬性)序列化成“文本(Text)”,而且這個類序列化後的元素還不能有子元素,意味著這個類的其他字段(屬性)只能序列化成“屬性(Attribute)”。

    XmlIgnore,這個表明不序列化指定的字段(屬性)。

    除了以上的,在遇到集合類型的字段(屬性)時,Xml.Serialization是將該字段(屬性)序列化成一個“元素(Element)”,該字段中的每一個對象序列化成該元素的子元素。

    對集合類型的字段(屬性)可以添加下列特性

    XmlArray("E"),這個表明把該字段(屬性)序列化成“元素(Element)”,“標簽(Tag)”為E。

    例如:<XmlArray("E")>Public Student As List(Of String),有三個值A、B、C。

    序列化後的結果為:

    <E>

    <String>A</String>

    <String>B</String>

    <String>C</String>

    </E>

    <XmlArrayItem("E")>,這個表明把該字段(屬性)每一個對象序列化為“元素(Element)”,“標簽(Tag)”為E。

    例如:<XmlArrayItem("E")>Public Student As List(Of String),有三個值A、B、C。

    序列化後的結果為:

    <Student>

    <E>A</E>

    <E>B</E>

    <E>C</E>

    </Student>

    大家可以和上面的例子對照一下區別。

    另外,上面兩個特性是可以疊加的。

    還可以對集合型的字段(屬性)添加XmlElement("E"),它表明將每一個對象序列化為“元素(Element)”,“標簽(Tag)”為E,同時每一個對象又都是它的子元素。通俗的講,就是平行序列化。

    例如::<XmlElement("Lan")>Public Student As List(Of String),有三個值A、B、C。

    序列化後的結果為:

    <E>

    <String>A</String>

    </E>

    <E>

    <String>B</String>

    </E>

    <E>

    <String>C</String>

    </E>

    以上是簡單的描述通過Xml.Serialization中的一些類,來控制對象的序列化成XML文件。也希望和各網友交流。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved