今天做了2个例子,关于Xml序列化和反序列化.
操作的对象UserInfo,自定义的一个对象.
UserInfo:
[OptionalField] : 标识可以缺少某一字段.
[XmlElement] : 标识Xml节点
[XmlAttribute] : 标识Xml节点的属性
[XmlIgnore] : 序列化或反序列化不关联的字段.
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
[XmlRoot]
public class UserInfo
{
[OptionalField]
List<User> _List = null;
public List<User> UserList
{
get { return _List; }
set { _List = value; }
}
}
[Serializable]
public class User
{
string id = String.Empty;
[XmlElement()]
public string Id
{
get { return id; }
set { id = value; }
}
string parentId = String.Empty;
[XmlElement()]
public string ParentId
{
get { return parentId; }
set { parentId = value; }
}
string code = String.Empty;
[XmlElement()]
public string Code
{
get { return code; }
set { code = value; }
}
}
序列化代码:this.List是一个我做的一个数据集合,存放的是User.
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
using (TextWriter tr = new StreamWriter("XMLFile1.xml"))
{
UserInfo userinfo = new UserInfo();
userinfo.UserList = this.List as List<User>;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(UserInfo));
xmlSerializer.Serialize(tr, userinfo);
tr.Close();
}
反序列化代码:
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
using (TextReader tr = new StreamReader("XMLFile1.xml"))
{
UserInfo userinfo = new UserInfo();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(UserInfo));
userinfo = xmlSerializer.Deserialize(tr) as UserInfo;
List = userinfo.UserList;
}