假设你有一个类名为Player的类,看起来像这样:
[XmlRoot]
public class Player
{
[XmlElement]
public int Level { get; set; }
[XmlElement]
public int Health { get; set; }
}
以下是一个完整的往返行程,以帮助你开始:
XmlSerializer xmls = new XmlSerializer(typeof(Player));
StringWriter sw = new StringWriter();
xmls.Serialize(sw, new Player { Level = 5, Health = 500 });
string xml = sw.ToString();
Player player = xmls.Deserialize(new StringReader(xml)) as Player;
XML 是:
<?xml version="1.0" encoding="utf-16"?>
<Player xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Level>5</Level>
<Health>500</Health>
</Player>
你猜 player 和我们序列化的原始对象完全相同。
如果你想将其序列化到文件或从文件反序列化,你可以这样做:
using (var stream = File.OpenWrite("my_player.xml"))
{
xmls.Serialize(stream, new Player { Level = 5, Health = 500 });
}
Player player = null;
using (var stream = File.OpenRead("my_player.xml"))
{
player = xmls.Deserialize(stream) as Player;
}
编辑:
如果你想要完全和你展示的XML相同:
XmlSerializer xmls = new XmlSerializer(typeof(Player));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlWriterSettings settings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true };
using (var stream = File.OpenWrite("my_player.xml"))
{
using (var xmlWriter = XmlWriter.Create(stream, settings))
{
xmls.Serialize(xmlWriter, new Player { Level = 5, Health = 500 }, ns);
}
}
Player player = null;
using (var stream = File.OpenRead("my_player.xml"))
{
player = xmls.Deserialize(stream) as Player;
}