我可以从 XML 文件生成 C# 类吗?
如果您正在 VS 2012(或更高版本)中处理 .NET 4.5 项目,您只需特殊粘贴您的 XML 文件作为类。
EDIT > Paste Special > Paste XML As Classes
是的,通过使用 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:emp可能有用。
如果为多维数组生成类,XSD.exe 生成器中存在错误,但是有解决方法。
但现在我使用
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 问题)
xsd.exe 和 svcutil 都对 XML 架构文件 (.xsd) 进行操作。 您的 XML 必须符合这两个工具所使用的架构文件。请注意,为此还存在各种第三方工具。
除此之外,建议编辑 test.xsd 文件以创建更合理的架构。
对于整数值,
type="xs:string"
可以更改为
type="xs:int"
需要填写的地方可以将minOccurs="0"
改为
minOccurs="1"
maxOccurs="unbounded"
可以更改为
maxOccurs="1"
,仅允许一项如果您想进一步验证数据,您可以创建更高级的 xsd-s,但这至少会在生成的 c# 中为您提供合理的数据类型。
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
C:\Program Files (x86)\Microsoft SDKs\Windows 10.0A in\NETFX 4.8 Tools>xsd C:\Test est-Schema.xsd /classes /language:cs /out:C:\Test\