Generate C# class from XML

后端 未结 8 1721
青春惊慌失措
青春惊慌失措 2020-11-22 05:19

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

相关标签:
8条回答
  • 2020-11-22 05:24

    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.

    0 讨论(0)
  • 2020-11-22 05:26

    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#.

    0 讨论(0)
  • 2020-11-22 05:31

    Use below syntax to create schema class from XSD file.

    C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
    
    0 讨论(0)
  • 2020-11-22 05:38

    I realise that this is a rather old post and you have probably moved on.

    But 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: Please make suggestions if you like it.

    SimpleXmlToCode

    0 讨论(0)
  • 2020-11-22 05:42

    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.

    0 讨论(0)
  • 2020-11-22 05:48

    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; }
    
    0 讨论(0)
提交回复
热议问题