本文主要是介绍串行化XML,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
XML的魅力
串行化XML是指为了方便存储或传输,把一个对象的公共的域和属性保存为一种串行格式(这里是XML格式)的过程。非串行化则是使用串行的状态信息将对象从串行XML状态还原成原始状态的过程。因此,可以把串行化看作是将对象的状态保存到流或缓冲区中的一种方法。
串行化的目的是数据存储和数据转换。数据存储指的是在用户会话时保存数据。当应用程序关闭时,数据被保存(串行化),而当用户回来时,数据又被重新加载(非串行化)。数据转换指将数据变换成能被另一个系统识别的格式。使用串行化和XML,可以很方便的进行数据转换。
串行化过程生成标准的XML文件,数据成员转换为XML元素。不过,并非所有的数据成员都变成元素,可以通过在类代码中添加一些标记来控制输出的XML文件。这样,数据成员可以变换为XML属性而非元素,也可以简单的被忽略掉。
可以将附加的特性用于类和属性.你必须引用System.Xml.Serialization名字空间来用这些特性.
特性 | 用途 |
[XmlIgnore] | 当公有的属性或字段不包括在串行化的XML结构中时。 |
[XmlRoot] | 用来识别作为XML文件根元素的类或结构。你可以用它来把一个元素名设置为根元素。 |
[XmlElement] | 当公有的属性或字段可以作为一个元素被串行化到XML结构中时。 |
[XmlAttribute] | 当公有的属性或字段可以作为一个特性被串行化到XML结构中时。 |
[XmlArray] | 当公有的属性或字段可以作为一个元素数组被串行化到XML结构中时。当一组对象用在一个类中时,这个特性很有用。 |
[XmlArrayItem] | 用来识别可以放到一个串行化数组中的类型 |
再次提醒大家注意,只能串行化公共(public)类和公共(public)字段(fields)和性质(property).
串行化包含数组(Arrays)的数据
using System;
using System.Collections;
using System.Xml.Serialization;
/// <summary>
/// Summary description for Cars.
/// </summary>
[XmlRoot("carsCollection")]
public class CarsArray {
private Car[] _CarsList = null;
public CarsArray() {}
public CarsArray(int size) {
_CarsList = new Car[size];
}
[XmlArray("carsArray")]
[XmlArrayItem("car")]
public Car[] CarsCollection {
get {
return _CarsList;
}
set {
_CarsList = value;
}
}
public Car this[int index] {
get {
if (index <= _CarsList.GetUpperBound(0) || index > -1)
return (Car)_CarsList[index];
else
throw new IndexOutOfRangeException("Invalid index value passed.");
}
set {
if (index <= _CarsList.GetUpperBound(0) || index > -1)
_CarsList[index] = value;
else
throw new IndexOutOfRangeException("Invalid index value passed.");
}
}
}
结果为:
<?xml version="1.0" encoding="utf-16"?>
<carsCollection xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<carsArray>
<car>
<license>1234</license>
<color>Black</color>
</car>
<car>
<license>4321</license>
<color>Blue</color>
</car>
</carsArray>
</carsCollection>
这篇关于串行化XML的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!