Чтобы использовать, xsdзапустите Командную строку разработчика для VS2013 в меню инструментов.
Джесс
13
xsd.exeможно найти под:C:\Program Files (x86)\Microsoft SDKs\Windows
Джулиан
7
имейте в виду , если у вас есть большой сложный файл XML класс сгенерированный будет настолько уродлив , что он будет почти непригодным для использования;)
Матфея Заблокируйте
3
Для меня xsd.exeбыл найден по адресу: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
user1991179
414
Если вы работаете над проектом .NET 4.5 в VS 2012 (или новее), вы можете просто Специально Вставить ваш XML-файл как классы.
Скопируйте содержимое вашего XML-файла в буфер обмена
В редакторе выберите место, куда вы хотите вставить ваши классы
В меню выберите EDIT > Paste Special > Paste XML As Classes
Я просто хочу, чтобы это генерировало автоматически реализованные свойства, как это делается для "Вставить JSON как классы". В настоящее время это означает 6-кратный раздутый код, который намного сложнее читать. Одно это заставляет меня искать другой инструмент, к сожалению.
Николас Петерсен
1
Это было оставлено вне VS 2013?
Роджер
3
@ Роджер Я не использовал VS 2013, но я думаю, что эта функция должна быть там, убедитесь, что ваш проект ориентирован на .NET 4.5 Framework
miszczu
2
Это намного быстрее чем xsd, но результат примерно такой же.
Джесс
4
Если у вас нет reharper, используйте regex замените на public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n=> public $1 $2 { get; set; }и `private \ w + \ w + Field; \ r \ n \ r \ n`
AlexDev
44
Сначала я думал, что Специальная паста - это Святой Грааль! Но потом я попробовал, и мои волосы побелели, как в фильме об Индиане Джонсе.
Вывод этого инструмента хорош, но я просто хочу предостеречь вас от того, чтобы не отправлять какие-либо конфиденциальные данные на этот сайт (или любые другие в этом отношении). Хотя я ценю предлагаемую услугу, у нас нет политики конфиденциальности и почти нет уверенности в том, что то, что вы вставляете, не будет зарегистрировано, проверено и т. Д.
SvenAelterman
2
У меня был XML-файл, который имеет некоторые рекурсивные отношения (возможно, это называется круговое отношение, я не уверен.) Другие не удалось, но xmltocsharp.azurewebsites.net был очень успешным на этом XML.
Корай
4
@ D.Kermott спасибо за ссылку на веб-сайт, я быстро взглянул на нее, и похоже, что она работает намного лучше, чем специальная вставка, код выглядит чище, хотя мой тестовый xml создал больше классов, это было намного приятнее в использовании.
Хараг
Жаль, что это, кажется, инвертирует порядок классов (внешние элементы перечислены последними)
Savage
22
Я понимаю, что это довольно старый пост, и вы, вероятно, пошли дальше.
Но у меня была та же проблема, что и у вас, поэтому я решил написать свою собственную программу.
Проблема с маршрутом "xml -> xsd -> classes" для меня заключалась в том, что он просто генерировал кусок кода, который был совершенно не поддерживаемым, и я закончил его поиском.
Это ни в коем случае не изящно, но это сделало работу для меня.
Вы можете получить это здесь: Пожалуйста, сделайте предложения, если вам это нравится.
выдает неправильный код: // ELEMENTS [XmlIgnore] public DateTime Value {get; устанавливать; } [XmlText] публичная строка ValueString {get {return Value? «правда»: «ложь»; } set {Value = value == "true"; }}
Андре Фидлер
И конструкторы не нужны + вы должны включить комментарии для публично видимых участников
André Fiedler
1
В свою защиту это было то, что я быстро собрал, и это сработало для меня. Я не вернулся к этому, но не стесняйтесь вносить изменения в репо.
Talon
Я использовал это в течение нескольких месяцев - он не идеален, но он довольно полезен, и я считаю, что он генерирует намного более читаемый / более простой XML, чем вставка VS2013 в XML. Очень ценил Талон.
И xsd.exe, и svcutil работают с файлом схемы XML (.xsd). Ваш XML должен соответствовать файлу схемы, который будет использоваться любым из этих двух инструментов.
Обратите внимание, что для этого также существуют различные сторонние инструменты.
В дополнение к этому рекомендуется отредактировать файл test.xsd для создания более разумной схемы.
type="xs:string"может быть изменено , чтобы type="xs:int"для целочисленных значений minOccurs="0"может быть изменено , чтобы minOccurs="1"там , где требуются поле maxOccurs="unbounded"может быть изменено , чтобы , maxOccurs="1"где только один элемент допускается
Вы можете создать более продвинутые xsd-s, если хотите продолжить проверку своих данных, но это по крайней мере даст вам разумные типы данных в сгенерированном c #.
Ответы:
Да, с помощью xsd.exe
Ноты
Ответьте, как изменить каталог в командной строке разработчика на d: \ temp.
Если вы генерируете классы для многомерного массива, в генераторе XSD.exe есть ошибка, но есть обходные пути .
источник
xsd
запустите Командную строку разработчика для VS2013 в меню инструментов.xsd.exe
можно найти под:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
был найден по адресу:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
Если вы работаете над проектом .NET 4.5 в VS 2012 (или новее), вы можете просто Специально Вставить ваш XML-файл как классы.
EDIT > Paste Special > Paste XML As Classes
источник
xsd
, но результат примерно такой же.public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n
=>public $1 $2 { get; set; }
и `private \ w + \ w + Field; \ r \ n \ r \ n`Сначала я думал, что Специальная паста - это Святой Грааль! Но потом я попробовал, и мои волосы побелели, как в фильме об Индиане Джонсе.
Но сейчас я использую http://xmltocsharp.azurewebsites.net/ и теперь я так же молод, как и всегда.
Вот сегмент того, что это произвело:
источник
Я понимаю, что это довольно старый пост, и вы, вероятно, пошли дальше.
Но у меня была та же проблема, что и у вас, поэтому я решил написать свою собственную программу.
Проблема с маршрутом "xml -> xsd -> classes" для меня заключалась в том, что он просто генерировал кусок кода, который был совершенно не поддерживаемым, и я закончил его поиском.
Это ни в коем случае не изящно, но это сделало работу для меня.
Вы можете получить это здесь: Пожалуйста, сделайте предложения, если вам это нравится.
SimpleXmlToCode
источник
Вы должны рассмотреть svcutil ( вопрос svcutil )
И xsd.exe, и svcutil работают с файлом схемы XML (.xsd). Ваш XML должен соответствовать файлу схемы, который будет использоваться любым из этих двух инструментов.
Обратите внимание, что для этого также существуют различные сторонние инструменты.
источник
Вы можете использовать xsd, как предлагает Дарин.
В дополнение к этому рекомендуется отредактировать файл test.xsd для создания более разумной схемы.
type="xs:string"
может быть изменено , чтобыtype="xs:int"
для целочисленных значенийminOccurs="0"
может быть изменено , чтобыminOccurs="1"
там , где требуются полеmaxOccurs="unbounded"
может быть изменено , чтобы ,maxOccurs="1"
где только один элемент допускаетсяВы можете создать более продвинутые xsd-s, если хотите продолжить проверку своих данных, но это по крайней мере даст вам разумные типы данных в сгенерированном c #.
источник
Используйте синтаксис ниже, чтобы создать класс схемы из файла XSD.
источник
Чтобы преобразовать XML в класс C #:
Примечание: со временем это приложение может быть заменено, но есть шанс, что появится другой инструмент, который сделает то же самое.
источник