Reputation: 86085
Can I generate a C# class from an XML file?
Upvotes: 288
Views: 269456
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
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
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
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
Reputation: 121
To convert XML into a C# Class:
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
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
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
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.
EDIT > Paste Special > Paste XML As Classes
Upvotes: 487
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
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