您的位置:首页 > 其它

xml的序列化和反序列化

2012-09-05 19:30 351 查看
xml的序列化和反序列化简单例子如下:

[XmlRoot("Person")]
public class Person
{
[XmlElement("Name")]
public string Name;
[XmlElement("Age")]
public int Age;
}

class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Name = "Stacey"; p.Age = 30;
XmlSerializer xs = new XmlSerializer(typeof(Person));
using (Stream s = File.Create("person.xml"))
xs.Serialize(s, p);
Person p2;
using (Stream s = File.OpenRead("person.xml"))
p2 = (Person)xs.Deserialize(s);
Console.WriteLine(p2.Name + " " + p2.Age);   // Stacey 30
}
}


两个模板:

序列化

class XmlStreamSerializer<T>
{
public Stream Serialize(T model)
{

MemoryStream stream = new MemoryStream();
XmlSerializer serializer = new XmlSerializer(typeof(T));
serializer.Serialize(stream, model);
stream.Position = 0;

return stream;
}
}


反序列化:

class XmlStreamDeserializer<T>
{
public T Deserialize(Stream xml)
{
T model;
Stream xmlStream = xml;
try
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
model = (T)serializer.Deserialize(xml);
}
catch (XmlException ex)
{
throw new ResponseDeserializationException(ex.Message, ex);
}
catch (InvalidOperationException ex)
{
throw new ResponseDeserializationException(ex.Message, ex);
}
finally
{
if (xmlStream != null)
{
xmlStream.Dispose();
}
}
return model;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: