如何从XML文件创建可序列化的C#类

时间:2010-12-02 23:06:25

标签: c# .net object xml-serialization

我在.net中对XML很新。作为我的任务的一部分,我需要创建可以序列化为XML的类。我有一个带有所有标签的示例XML文件(该类应该生成类似于示例XML文件的XML)。从XML文件创建类的最佳方法是什么?

提前谢谢!!

3 个答案:

答案 0 :(得分:10)

您可以使用XSD.exe从.xml创建.cs文件。 http://msdn.microsoft.com/en-us/library/x6c1kb0s%28VS.71%29.aspx

在命令行:

xsd myFile.xml
xsd myFile.xsd

第一行将生成模式定义文件(xsd),第二行应生成.cs文件。我不确定语法是否准确,但它应该让你开始。

答案 1 :(得分:4)

向后工作可能有所帮助 - 首先创建课程,然后序列化,看看你得到了什么。

对于最简单的类,它实际上非常简单。您可以使用XmlSerializer进行序列化,例如:

namespace ConsoleApplication1
{
    public class MyClass
    {
        public string SomeProperty
        {
            get;
            set;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
            TextWriter writer = new StreamWriter(@"c:\temp\class.xml");

            MyClass firstInstance = new MyClass();
            firstInstance.SomeProperty = "foo"; // etc

            serializer.Serialize(writer, firstInstance);
            writer.Close();

            FileStream reader = new FileStream(@"c:\temp\class.xml", FileMode.Open);

            MyClass secondInstance = (MyClass)serializer.Deserialize(reader);

            reader.Close();
        }
    }
}

这会将您的类的序列化表示形式写入“c:\ temp \ class.xml”。你可以看一看,看看你得到了什么。相反,您可以使用serializer.Deserialize从“c:\ temp \ class.xml”实例化该类。

您可以修改序列化的行为,处理意外的节点等 - 例如,请查看the XmlSerializer MSDN page

答案 2 :(得分:-1)

这是一个如何序列化/反序列化对象的好例子。 http://sharpertutorials.com/serialization/