使用Visual Studio 2010从xsd文件生成。net 4.0 c#类(实体)有哪些选项?
当前回答
当您使用循环引用(即类型可以直接或间接拥有自己类型的元素)时,Xsd.exe不能很好地工作。
当存在循环引用时,我使用Xsd2Code。Xsd2Code可以很好地处理循环引用,并且可以在VS IDE中工作,这是一个很大的优点。它还有许多您可以使用的特性,比如生成序列化/反序列化代码。但是,如果您正在生成序列化,请确保您打开GenerateXMLAttributes(否则,如果没有在所有元素上定义,则会出现排序异常)。
两者都不适合选择功能。你最终得到的是object的列表/集合,而不是你想要的类型。我建议尽可能避免在xsd中进行选择,因为这不能很好地序列化/反序列化到强类型类中。如果你不关心这个,那就不是问题。
xsd2code中的any特性反序列化为System.Xml.XmlElement,我发现这非常方便,但如果您想要强类型对象,这可能是一个问题。当允许自定义配置数据时,我经常使用any,这样XmlElement可以方便地传递给在其他地方自定义的另一个XML反序列化器。
其他回答
我在批处理脚本中使用XSD直接从XML生成.xsd文件和类:
set XmlFilename=Your__Xml__Here
set WorkingFolder=Your__Xml__Path_Here
set XmlExtension=.xml
set XsdExtension=.xsd
set XSD="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1\Tools\xsd.exe"
set XmlFilePath=%WorkingFolder%%XmlFilename%%XmlExtension%
set XsdFilePath=%WorkingFolder%%XmlFilename%%XsdExtension%
%XSD% %XmlFilePath% /out:%WorkingFolder%
%XSD% %XsdFilePath% /c /out:%WorkingFolder%
很简单;只需运行(在vs命令提示符下)
xsd your.xsd /classes
(这将创建你的。cs)。但是请注意,自2.0以来,这里的大部分固有选项都没有太大变化
对于选项,使用xsd /?或参阅MSDN;例如/enableDataBinding可能很有用。
xsd.exe, Marc Gravell提到过。在我看来,这是最快的启动和运行方式。
或者如果你需要更多的灵活性/选择:
xsd2code VS插件(Codeplex)
当您使用循环引用(即类型可以直接或间接拥有自己类型的元素)时,Xsd.exe不能很好地工作。
当存在循环引用时,我使用Xsd2Code。Xsd2Code可以很好地处理循环引用,并且可以在VS IDE中工作,这是一个很大的优点。它还有许多您可以使用的特性,比如生成序列化/反序列化代码。但是,如果您正在生成序列化,请确保您打开GenerateXMLAttributes(否则,如果没有在所有元素上定义,则会出现排序异常)。
两者都不适合选择功能。你最终得到的是object的列表/集合,而不是你想要的类型。我建议尽可能避免在xsd中进行选择,因为这不能很好地序列化/反序列化到强类型类中。如果你不关心这个,那就不是问题。
xsd2code中的any特性反序列化为System.Xml.XmlElement,我发现这非常方便,但如果您想要强类型对象,这可能是一个问题。当允许自定义配置数据时,我经常使用any,这样XmlElement可以方便地传递给在其他地方自定义的另一个XML反序列化器。
如果您希望生成具有自动属性的类,请使用此将XSD转换为XML,然后使用此将XML转换为JSON,并将结果复制到剪贴板。 然后在VS中,在你要创建类的文件中,点击编辑>粘贴特殊>将JSON粘贴为类。
推荐文章
- 如何在c#中获得正确的时间戳
- Linq选择列表中存在的对象(A,B,C)
- c# .NET中的App.config是什么?如何使用它?
- c#:如何获得一个字符串的第一个字符?
- String类中的什么方法只返回前N个字符?
- 我如何提高ASP。NET MVC应用程序性能?
- 更好的方法将对象转换为int类型
- 我可以将c#字符串值转换为转义字符串文字吗?
- 在c#中转换char到int
- c#中朋友的对等物是什么?
- 关键字使用virtual+override vs. new
- 无法解析类型为“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务
- 在ASP中选择Tag Helper。NET Core MVC
- 如何在没有任何错误或警告的情况下找到构建失败的原因
- 跨线程操作无效:控件“textBox1”从创建它的线程以外的线程访问