Использование XSD2CODE с несколькими файлами схемы - PullRequest
5 голосов
/ 22 февраля 2012

Я использую XSD2CODE с Visual Studio 2010. Я знаю, что могу щелкнуть правой кнопкой мыши файл схемы (XSD) и сгенерировать из него класс c #.

Что мне хотелось бы знать, так это как сгенерировать класс C #, когда у меня есть два файла схемы для одного файла XML?

Дополнительная информация:

Возможно, я не предоставил достаточно подробностей в своем первоначальном вопросе.

Ссылочный вопрос Почему XSD.EXE создает два файла .XSD и как их использовать? , я в основном задаю тот же вопрос для XSD2CODE вместо XSD.

С XSD я бы использовал команду:

D:\>xsd response.xsd response_app1.xsd /classes

Как мне это сделать с XSD2CODE, как в графическом интерфейсе VS 2010, так и / или в командной строке?

1 Ответ

3 голосов
/ 22 февраля 2012

РЕДАКТИРОВАТЬ:
Чтобы ответить на обновленный вопрос, то не похоже, что Xsd2Code был разработан для обработки более одного файла .xsd одновременно.

Я получаю это от:

  1. Синтаксис командной строки
    Xsd2Code.exe <XSD File> [Namespace] [Output file name] [Options]
  2. Быстрый просмотр исходного кода (загрузите сборку 88331 с http://xsd2code.codeplex.com/SourceControl/list/changesets и посмотрите на Trunk\Xsd2Code.Console\EntryPoint.cs.

Паскаль Кабанель, кажется, довольно активен на сайте CodePlex Xsd2Code. Вы можете связаться с ним для однозначного ответа: http://www.codeplex.com/site/users/view/pcabanel

  • Я оставлю свое пред. ответ ниже

Чтобы автоматически создать файлы поддержки класса xsd2Code, вы можете щелкнуть файл .xsd в обозревателе решений и в окне свойств записать / вставить Xsd2CodeCustomTool в свойство «Пользовательский инструмент».

Чтобы «видеть» типы данных из одного файла .xsd в другом, вы можете использовать оператор include.

Вот пример с Person.xsd, содержащим определение данных и Employees.xsd include -ing Person.xsd и использующий тип данных Person.

  • Обратите внимание, что, поскольку Employees.xsd уже включает Person.xsd, вам нужно только сгенерировать Xsd2Code для Employees.xsd.

Person.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="CommonNamespace"
           xmlns="CommonNamespace"
    >   
    <xs:complexType name="Person">
        <xs:sequence>
            <xs:element name="Name" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

Employees.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="CommonNamespace"
           xmlns="CommonNamespace"
    >
    <xs:include schemaLocation="Person.xsd"/>

    <xs:element name="Employees">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Employee" type="Person" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>
...