使用序列化映射类和xml文件

时间:2009-09-21 15:33:17

标签: c# xml xml-serialization

如果我在C#中创建一个类,如何将其序列化/反序列化为文件?这是可以使用内置功能完成的,还是自定义代码?

2 个答案:

答案 0 :(得分:3)

XmlSerializer;请注意,确切的xml名称可以通过various attributes来控制,但您真正需要的是:

  • 公共类型
  • 使用默认构造函数
  • 和公共读/写成员(理想属性)

示例:

using System;
using System.Xml;
using System.Xml.Serialization;
public class Person {
    public string Name { get; set; }
}

static class Program {
    static void Main() {
        Person person = new Person { Name = "Fred"};
        XmlSerializer ser = new XmlSerializer(typeof(Person));
        // write
        using (XmlWriter xw = XmlWriter.Create("file.xml")) {
            ser.Serialize(xw, person);
        }
        // read
        using (XmlReader xr = XmlReader.Create("file.xml")) {
            Person clone = (Person) ser.Deserialize(xr);
            Console.WriteLine(clone.Name);
        }
    }
}

答案 1 :(得分:0)

您需要使用类XmlSerializer。主要方法是Serialize和Deserialize。他们接受流,文本读者,作者和其他类。

代码示例:

public class Program
{
    public class MyClass
    {
        public string Name { get; set; }
    }

    static void Main(string[] args)
    {
        var myObj = new MyClass { Name = "My name" };
        var fileName = "data.xml";

        var serializer = new XmlSerializer(typeof(MyClass));

        using (var output = new XmlTextWriter(fileName, Encoding.UTF8))
            serializer.Serialize(output, myObj);

        using (var input = new StreamReader(fileName))
        {
            var deserialized = (MyClass)serializer.Deserialize(input);
            Console.WriteLine(deserialized.Name);
        }

        Console.WriteLine("Press ENTER to finish");
        Console.ReadLine();
    }
}