XSD.exe не осуществляет minOccurs

У меня есть простая схема, где я объявляю и minOccurs и maxOccurs к 1. Когда я выполняю XSD.exe, чтобы генерировать класс C# и использовать класс в коде; поле не осуществляется как обязательное. Там некоторый дополнительный шаг отсутствует? или классы, сгенерированные с помощью XSD.exe, не делают обязательных полей?

любые предложения или понимание будут полезны.

7
задан skaffman 3 May 2010 в 14:01
поделиться

3 ответа

Как бы вы обеспечили соблюдение произвольной минокуры в коде? Какие-то утверждения? Я полагаю, вы можете только отображать на "Non-nullable single instance" (1:1) non-nullable array (1:many) и их nullable эквиваленты (0;1), и (0:many)

1
ответ дан 7 December 2019 в 03:13
поделиться

Как и инструмент схемы Xml / infer в Visual Studio, всякий раз, когда я использовал XSD.exe, мне приходилось исправлять часть сгенерированного кода. XSD.exe дает хорошее приближение, но не работает полностью.

Ошибка minOccurs / maxOccurs задокументирована в MSDN.

При генерации исходного кода из документа схемы XML Xsd.exe игнорирует атрибут minOccurs, примененный к , , , Элементы , и .

Для элемента Xsd.exe игнорирует атрибут minOccurs, если значение атрибута maxOccurs больше 1 или не ограничено. В этом случае инструмент создает массив типа, соответствующего типу данных XSD . Xsd.exe использует значение атрибута maxOccurs, чтобы определить , создавать ли один экземпляр или массив.

Для элемента Xsd.exe также игнорирует атрибут minOccurs , если он применяется к типу данных схемы , который преобразуется в .NET Framework {{1} } ссылочный тип.

Только при выполнении всех следующих условий Xsd.exe использует значение атрибута minOccurs:

Элемент задействован.

Атрибут maxOccurs определяет один экземпляр .

Тип данных преобразуется в тип значения .

8
ответ дан 7 December 2019 в 03:13
поделиться

Вы правы в том, что XSD.EXE не требует выполнения требований. Это как задумано.

0
ответ дан 7 December 2019 в 03:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: