我被分配了一项任务,将数据库中的参考数据导入到一组实体类中。以下是一个更简单的实体类的示例:
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中。)
另一方面,我发现了this article如何从XML文件反序列化。看起来非常简单,但我想知道如何生成此示例中book
类的XSD文件?
答案 0 :(得分:1)
要从类中获取模式,反之亦然,请使用xsd.exe
http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.71).aspx
关于复杂类如何转换为不同的模式,有很多关于如何阅读,但你应该开始使用该工具。
答案 1 :(得分:1)
使用代码生成XSD(而不是使用xsd.exe
或svcutil.exe
),结果更加清晰。以下是我遵循的步骤:
创建新的控制台应用程序like this,但使用StreamWriter
输出到文件而不是控制台。生成的XSD只有我需要的实体,而不是更多。 [DataContract]
/ [DataMember]
属性会导致XSD结构与代码中的名称相同。
使用Eclipse从XSD like this生成示例XML。
使用code like this将XML文件反序列化为所需的实体。