Есть ли инструмент для генерации простых классов C # из XSD? - PullRequest
3 голосов
/ 14 мая 2011

У меня есть xsd (значительно упрощено для этого поста):

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="serviceResponse" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="serviceResponse" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="searchResults">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="numberOfResults" type="xs:string" minOccurs="0" />
              <xs:element name="raceList" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="race" minOccurs="0" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="id" type="xs:string" minOccurs="0" />
                          <xs:element name="title" type="xs:string" minOccurs="0" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

Мне нужны простые классы c #:

public class serviceResponse
{
    public searchResults SearchResults { get; set; }
}

public class searchResults
{
    public string numberOfResults { get; set; }
    public List<race> raceList { get; set; }
}

public class race
{
    public string id { get; set; }
    public string title { get; set; }   
}

Мне сказали, что xsd.exe или даже csxsd.exe могут это сделать, но я не вижу флагов, которые просто извлекают из них простые используемые классы. Мне просто нужны супер простые классы, которые можно заполнить xml из успокоительных вызовов API. Я не хочу передавать код 150+ различных типов объектов. Есть ли инструмент, который делает это?

Ответы [ 3 ]

6 голосов
/ 14 мая 2011

Попробуйте Xsd2Code - бесплатно и доступно в CodePlex. Плагин Visual Studio, чтобы щелкнуть правой кнопкой мыши XSD и создать для него файл .cs.

Обновление (май 2018):
К сожалению, этот инструмент больше не доступен бесплатно. Вы можете найти новый веб-сайт Xsd2Code здесь и просмотреть варианты лицензирования.

enter image description here

3 голосов
/ 14 мая 2011

Для этого вы можете использовать xsd.exe .

Что именно делает это неподходящим?

1 голос
/ 07 июля 2011

Вы также можете включить xsd в инструменты Visual Studio Extwermal, например: В ВС:

1. Выберите ИНСТРУМЕНТЫ

2. Выберите ВНЕШНИЙ ИНСТРУМЕНТ

3.Выбрать ДОБАВИТЬ

◦Title = дать значимый заголовок, например, "XSD"

omCommand = C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin \ xsd.exe это место установки по умолчанию

guArguments = $ (ItemPath) / c / l: vb используйте стандартные переключатели XSD, которые вы обычно используете. Выше "/ c / l: vb" означает создание класса VB из текущего XSD-документа

DirectoryItem Directory = ваш выбор, но если вы хотите вывод в той же директории / папке, что и файл xsd, $ (ItemDir)

◦ следуйте приведенным выше советам, чтобы проверить «Использовать окно вывода», чтобы вы могли видеть, что происходит

4.Нажмите ПРИМЕНИТЬ После выполнения вышеизложенного вы увидите «XSD» (или любой другой заголовок, который вы ввели) при следующем выборе инструментов. Выберите его, чтобы запустить xsd.exe для текущего документа.

...