Можно ли сгенерировать класс С# из файла 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" для меня заключалась в том, что он просто сгенерирован кусок кода, который был совершенно недосягаемым, и я закончил его дергать.
Это никоим образом не изящно, но это помогло мне.
Вы можете получить его здесь: Пожалуйста, внесите предложения, если вам это нравится.
Ответ 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 для инструмента кода класса
- Загрузка, установка и использование приложения
Примечание: в течение всего времени это приложение может быть заменено, но, скорее всего, будет другой инструмент, который сделает то же самое.