Создать класс C # из XML - PullRequest
       15

Создать класс C # из XML

225 голосов
/ 17 ноября 2010

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

Ответы [ 8 ]

391 голосов
/ 26 июня 2013

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

  1. Копировать файлы XMLсодержимое в буфер обмена
  2. В редакторе выберите место, куда вы хотите вставить ваши классы
  3. В меню выберите EDIT > Paste Special > Paste XML As Classes
323 голосов
/ 17 ноября 2010

Да, с помощью 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 есть ошибка, но есть обходные пути .

38 голосов
/ 15 июня 2016

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

Но теперь я использую 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; }
22 голосов
/ 05 марта 2013

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

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

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

Это ни в коем случае не элегантно, но оно сделало всю работу за меня.

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

SimpleXmlToCode

6 голосов
/ 17 ноября 2010

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

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

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

3 голосов
/ 17 ноября 2010

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

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

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

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

0 голосов
/ 14 марта 2018

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

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

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

0 голосов
/ 11 сентября 2017

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

C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...