从XML生成C#类

时间:2010-11-17 10:40:01

标签: c# .net xml xsd

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

8 个答案:

答案 0 :(得分:389)

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

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

答案 1 :(得分:319)

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

备注

回答how to change directory in Developer Command Prompt到d:\ temp可能有用。

如果为多维数组生成类,则XSD.exe生成器中存在错误,但there are workarounds

答案 2 :(得分:38)

起初我认为Paste Special是圣杯!但后来我尝试了,我的头发就像印第安纳琼斯电影一样变白了。

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

答案 3 :(得分:22)

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

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

" xml - >的问题xsd - >类"我的路线是它刚刚产生的 一堆完全无法维护的代码,我最终还是把它搞得一团糟。

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

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

SimpleXmlToCode

答案 4 :(得分:6)

您应该考虑使用svcutil(svcutil question

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

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

答案 5 :(得分:3)

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

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

对于整数值,

type="xs:string"可以更改为type="xs:int" minOccurs="0"可以更改为需要字段的minOccurs="1" maxOccurs="unbounded"可以更改为maxOccurs="1",其中只允许一个项目

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

答案 6 :(得分:0)

使用以下语法从XSD文件创建架构类。

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

答案 7 :(得分:0)

将XML转换为C#类:

注意:在充足的时间内,这个应用程序可能会被替换,但很有可能,还有另一个工具可以做同样的事情。