从XML生成C#类

我可以从XML文件生成一个C#类吗?

是的,通过使用xsd.exe

D:\temp>xsd test.xml Microsoft (R) Xml Schemas/DataTypes support utility [Microsoft (R) .NET Framework, Version 4.0.30319.1] Copyright (C) Microsoft Corporation. All rights reserved. Writing file 'D:\temp\test.xsd'. D:\temp>xsd test.xsd /classes Microsoft (R) Xml Schemas/DataTypes support utility [Microsoft (R) .NET Framework, Version 4.0.30319.1] Copyright (C) Microsoft Corporation. All rights reserved. Writing file 'D:\temp\test.cs'. 

如果您正在VS 2012(或更新版本)中使用.NET 4.5项目,则可以将特定的XML文件粘贴为类。

  1. 将您的XML文件的内容复制到剪贴板
  2. 在编辑器中,选择你想要粘贴课程的地方
  3. 从菜单中选择EDIT > Paste Special > Paste XML As Classes

我意识到这是一个相当古老的帖子,你可能已经走了。

但是我遇到了同样的问题,所以我决定写自己的程序。

对于我来说,“xml – > xsd – > classes”路线的问题在于,它只是产生了一堆完全无法维护的代码,最后我得到了它的草皮。

这绝不是优雅,但它为我做了工作。

你可以在这里得到它:如果你喜欢它,请提出建议。

SimpleXmlToCode

起初我以为膏特别是圣杯! 但后来我试了一下,头发变成白色,就像印第安那琼斯的电影一样。

但是现在我使用http://xmltocsharp.azurewebsites.net/ ,现在我已经年轻了。

以下是它生成的一部分内容:

 namespace Xml2CSharp { [XmlRoot(ElementName="entry")] public class Entry { [XmlElement(ElementName="hybrisEntryID")] public string HybrisEntryID { get; set; } [XmlElement(ElementName="mapicsLineSequenceNumber")] public string MapicsLineSequenceNumber { get; set; } 

你应该考虑svcutil( svcutil问题 )

xsd.exe和svcutil都在XML模式文件(.xsd)上运行。 您的XML必须符合这两个工具中任何一个要使用的模式文件。

请注意,各种第三方工具也存在。

您可以按照Darin的建议使用xsd。

除此之外,建议编辑test.xsd文件以创建更合理的模式。

对于整数值,可将type="xs:string"更改为type="xs:int"
minOccurs="0"可以更改为minOccurs="1" ,其中该字段是必需的
maxOccurs="unbounded"可以更改为maxOccurs="1" ,其中只允许一个项目

如果你想进一步验证你的数据,你可以创建更高级的xsd-s,但是这至少会给你生成的c#中合理的数据类型。

使用下面的语法从XSD文件创建模式类。

 C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\