技术开发 频道

.Net高级编程之序列化


利用Attributes对XML序列化进行控制

    System.Xml.Serialization名字空间中定义了大量的Attributes来对XML的序列化过程进行干预。其中比较常用的有XmlRoot、 XmlElement、 XmlAttribute和XmlIgnore等等。下面我们对User类型的XML序列化进行一定的定制,将XML根节点设置为UserInfo,用户名字段通过Element方式进行存储,年龄字段通过XML属性方式进行存储,而Temp字段则不希望被序列化,我们来打上这些标签,看看有什么效果。

[XmlRoot("UserInfo")]//重新命名根节点 
public class User
{
[XmlElement("UserName")]//重新命名
public string name;
[XmlAttribute("Age")] //设置为属性
public int age;
[XmlIgnore] //不对Temp进行序列化
public int temp = 0;
public DateTime saveTime = DateTime.MinValue;
}
   运行结果:
<?xml version="1.0" encoding="utf-16"?> 
<UserInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Age="20">
<UserName>张三</UserName>
<saveTime>0001-01-01T00:00:00</saveTime>
</UserInfo>
    我们看到,通常利用Attributes标签,已经能让Xml序列化器按照我们的方式来进行序列化了,当然如果这些都无法满足你的要求的话,那么还有一种办法,那就是实现IXmlSerializable接口。
0