user496949
user496949

Reputation: 86085

Generate C# class from XML

Can I generate a C# class from an XML file?

Upvotes: 288

Views: 269456

Answers (10)

Abhi
Abhi

Reputation: 136

Can use xsd.exe to convert and for that we will have to use command in cmd

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools>xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\

Upvotes: 0

Talon
Talon

Reputation: 3593

I had the same problem as you so I decided to write my own program.

The problem with the "xml -> xsd -> classes" route for me was that it just generated a lump of code that was completely unmaintainable and I ended up turfing it.

It is in no way elegant but it did the job for me. You can get it here: SimpleXmlToCode

Please make suggestions if you like it.

Upvotes: 23

Jeremy Hodge
Jeremy Hodge

Reputation: 662

Found this site a bit ago. It converts XML and JSON to C# and Java classes. Has several options to tweak as you need. I use it pretty often. https://json2csharp.com/xml-to-csharp

Upvotes: 2

Darin Dimitrov
Darin Dimitrov

Reputation: 1038790

Yes, by using 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'.

Notes

Answer how to change directory in Developer Command Prompt to d:\temp may be useful.

If you generate classes for multi-dimensional array, there is a bug in XSD.exe generator, but there are workarounds.

Upvotes: 373

J Wood
J Wood

Reputation: 121

To convert XML into a C# Class:

  • Navigate to the Microsoft Visual Studio Marketplace: -- https://marketplace.visualstudio.com
  • In the search bar enter text: -- xml to class code tool
  • Download, install, and use the app

Note: in the fullness of time, this app may be replaced, but chances are, there'll be another tool that does the same thing.

Upvotes: 0

Kiran.Bakwad
Kiran.Bakwad

Reputation: 624

Use below syntax to create schema class from XSD file.

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

Upvotes: 2

D. Kermott
D. Kermott

Reputation: 1673

At first I thought the Paste Special was the holy grail! But then I tried it and my hair turned white just like the Indiana Jones movie.

But now I use http://xmltocsharp.azurewebsites.net/ and now I'm as young as ever.

Here's a segment of what it generated:

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

Upvotes: 63

miszczu
miszczu

Reputation: 5125

If you are working on .NET 4.5 project in VS 2012 (or newer), you can just Special Paste your XML file as classes.

  1. Copy your XML file's content to clipboard
  2. In editor, select place where you want your classes to be pasted
  3. From the menu, select EDIT > Paste Special > Paste XML As Classes

Upvotes: 487

Albin Sunnanbo
Albin Sunnanbo

Reputation: 47038

You can use xsd as suggested by Darin.

In addition to that it is recommended to edit the test.xsd-file to create a more reasonable schema.

type="xs:string" can be changed to type="xs:int" for integer values
minOccurs="0" can be changed to minOccurs="1" where the field is required
maxOccurs="unbounded" can be changed to maxOccurs="1" where only one item is allowed

You can create more advanced xsd-s if you want to validate your data further, but this will at least give you reasonable data types in the generated c#.

Upvotes: 6

ng5000
ng5000

Reputation: 12580

You should consider svcutil (svcutil question)

Both xsd.exe and svcutil operate on the XML schema file (.xsd). Your XML must conform to a schema file to be used by either of these two tools.

Note that various 3rd party tools also exist for this.

Upvotes: 6

Related Questions