从XML生成c#类

我可以从XML文件生成c#类吗?

244804 次浏览

是的,通过使用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'.

笔记

回答如何在开发人员命令提示中更改目录到d:\temp可能有用。

如果你为多维数组生成类,XSD.exe生成器中有一个错误,但是有变通办法. exe生成器中有一个错误。

你应该考虑svcutil (svcutil问题)

xsd.exe和svcutil都对XML模式文件(.xsd)进行操作。您的XML必须符合这两种工具使用的模式文件。

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

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

除此之外,建议编辑测试。xsd文件创建一个更合理的模式。

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

如果希望进一步验证数据,可以创建更高级的xsd-s,但这至少会在生成的c#中为您提供合理的数据类型。

我和你有同样的问题,所以我决定自己写程序。

"xml ->xsd→classes"对我来说,它就是生成的 这是一段完全无法维护的代码,我最终放弃了它 它一点也不优雅,但对我来说它做到了。 你可以在这里得到它:SimpleXmlToCode

喜欢的话请提意见。

如果你在VS 2012(或更新版本)中使用。net 4.5项目,你可以将你的XML文件特殊的粘贴作为类。

  1. 将XML文件的内容复制到剪贴板
  2. 在编辑器中,选择要粘贴类的位置
  3. 从菜单中,选择EDIT > Paste Special > Paste XML As Classes

一开始我以为膏体特别版是圣杯!但后来我试了一下,我的头发变白了,就像印第安纳·琼斯电影里那样。

但现在我使用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; }

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

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

将XML转换为c#类:

  • 导航到Microsoft Visual Studio市场: 李——https://marketplace.visualstudio.com < / > 在搜索栏输入text: ——XML到类代码工具
  • 下载、安装并使用该应用程序

注意:在适当的时候,这个应用程序可能会被取代,但有可能会有另一个工具做同样的事情。

发现这个网站有点前。它将XML和JSON转换为c#和Java类。有几个选项可以根据需要进行调整。我经常用它。 https://json2csharp.com/xml-to-csharp < / p >