Сгенерировать класс С# из XML

Можно ли сгенерировать класс С# из файла XML?

Ответ 1

Да, с помощью 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:\temp.

Если вы генерируете классы для многомерного массива, в генераторе XSD.exe есть ошибка, но есть обходные пути.

Ответ 2

Если вы работаете над проектом .NET 4.5 в VS 2012 (или новее), вы можете просто Специальная вставка вашего XML файла в качестве классов.

  • Скопируйте содержимое вашего XML файла в буфер обмена
  • В редакторе выберите место, где вы хотите наклеить классы.
  • В меню выберите EDIT > Paste Special > Paste XML As Classes

Ответ 3

Сначала я подумал, что Паштет Специальный был святым Граалем! Но потом я попробовал это, и мои волосы побледнели, как фильм Индианы Джонса.

Но теперь я использую 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; }

Ответ 4

Я понимаю, что это довольно старый пост, и вы, вероятно, переехали.

Но у меня была такая же проблема, как и вы, поэтому я решил написать свою собственную программу.

Проблема с маршрутом "xml → xsd → classes" для меня заключалась в том, что он просто сгенерирован кусок кода, который был совершенно недосягаемым, и я закончил его дергать.

Это никоим образом не изящно, но это помогло мне.

Вы можете получить его здесь: Пожалуйста, внесите предложения, если вам это нравится.

SimpleXmlToCode

Ответ 5

Вы должны рассмотреть svcutil (вопрос svcutil)

Оба xsd.exe и svcutil работают с файлом схемы XML (.xsd). Ваш XML должен соответствовать файлу схемы, который будет использоваться одним из этих двух инструментов.

Обратите внимание, что для этого существуют и другие сторонние инструменты.

Ответ 6

Вы можете использовать xsd, как было предложено Дарином.

В дополнение к этому рекомендуется отредактировать файл test.xsd для создания более разумной схемы.

type="xs:string" можно изменить на type="xs:int" для целых значений
minOccurs="0" можно изменить на minOccurs="1", где требуется поле.
maxOccurs="unbounded" можно изменить на maxOccurs="1", где разрешен только один элемент

Вы можете создать более сложные xsd-s, если хотите еще раз проверить свои данные, но это, по крайней мере, даст вам разумные типы данных в сгенерированном С#.

Ответ 7

Используйте синтаксис ниже для создания класса схемы из файла XSD.

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

Ответ 8

Чтобы преобразовать XML в класс С#:

  • Перейдите в Microsoft Visual Studio Marketplace: - https://marketplace.visualstudio.com
  • В строке поиска введите текст: - xml для инструмента кода класса
  • Загрузка, установка и использование приложения

Примечание: в течение всего времени это приложение может быть заменено, но, скорее всего, будет другой инструмент, который сделает то же самое.