如何将序列化的数据读入一组实体类
本文关键字:一组 实体 序列化 数据 | 更新日期: 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.exe
或svcutil.exe
)要干净得多。以下是我遵循的步骤:
-
像这样创建一个新的控制台应用程序,但使用
StreamWriter
输出到文件而不是控制台。得到的XSD只有我需要的实体,没有其他的了。[DataContract]
/[DataMember]
属性使XSD结构具有与代码中相同的名称。 -
使用Eclipse从XSD生成样例XML,如下所示。
-
使用这样的代码将XML文件反序列化为所需的实体。