Могу ли я создать класс C # из файла XML?
Могу ли я создать класс C # из файла XML?
Ответы:
Да, с помощью 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 есть ошибка, но есть обходные пути .
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/ и теперь я так же молод, как и всегда.
Вот сегмент того, что это произвело:
namespace Xml2CSharp
{
[XmlRoot(ElementName="entry")]
public class Entry {
[XmlElement(ElementName="hybrisEntryID")]
public string HybrisEntryID { get; set; }
[XmlElement(ElementName="mapicsLineSequenceNumber")]
public string MapicsLineSequenceNumber { get; set; }
Я понимаю, что это довольно старый пост, и вы, вероятно, пошли дальше.
Но у меня была та же проблема, что и у вас, поэтому я решил написать свою собственную программу.
Проблема с маршрутом "xml -> xsd -> classes" для меня заключалась в том, что он просто генерировал кусок кода, который был совершенно не поддерживаемым, и я закончил его поиском.
Это ни в коем случае не изящно, но это сделало работу для меня.
Вы можете получить это здесь: Пожалуйста, сделайте предложения, если вам это нравится.
Вы должны рассмотреть 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.
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
Чтобы преобразовать XML в класс C #:
Примечание: со временем это приложение может быть заменено, но есть шанс, что появится другой инструмент, который сделает то же самое.