如何将序列化的数据读入一组实体类

本文关键字:一组 实体 序列化 数据 | 更新日期: 2023-09-27 18:11:42

我被分配了一个任务,将参考数据从数据库导入到一组实体类中。下面是一个比较简单的实体类的例子:

public class CountryList
{
    public CountryList()
    {
        this.Countries = new List<Country>();           
    }
    public IList<Country> Countries { get; private set; }
}

填充XML文件不是我的责任。但是提供一个模式(XSD文件)来指定所需的格式

到目前为止,我已经尝试用[DataContract]/[DataMember]注释所需的类/成员,并使用svcutil生成一组使用以下命令的XSD文件:

svcutil /t:metadata /dconly MyProject.dll

这会在10个独立的XSD文件中生成大量内容。我找不到一种方法来指定我感兴趣的实体,并使其精简。(只有一些引用数据需要导入,还有很多实体类不需要在XSD中)

另一种方法是,我找到了这篇关于如何从XML文件反序列化的文章。表面上看起来很简单,但我想知道在这个例子中book类的XSD文件是如何生成的?

如何将序列化的数据读入一组实体类

使用xsd.exe

从类中获取模式,反之亦然

http://msdn.microsoft.com/en-us/library/x6c1kb0s (v = vs.71) . aspx

关于如何将一个复杂的类转换为不同的模式,有很多阅读要做,但是您应该开始使用这个工具。

使用代码生成XSD(而不是使用xsd.exesvcutil.exe)要干净得多。以下是我遵循的步骤:

  1. 像这样创建一个新的控制台应用程序,但使用StreamWriter输出到文件而不是控制台。得到的XSD只有我需要的实体,没有其他的了。[DataContract]/[DataMember]属性使XSD结构具有与代码中相同的名称。

  2. 使用Eclipse从XSD生成样例XML,如下所示。

  3. 使用这样的代码将XML文件反序列化为所需的实体。