Остановите xsd.exe от создания многомерных массивов - PullRequest
3 голосов
/ 15 ноября 2011

У меня есть XSD-схема со следующей структурой: ElementA имеет только одну ElementB и имеет значение от 0 до бесконечности ElementC

ElementA -> ElementB -> ElementC[]

Когда я генерирую классы с этой схемой и xsd.exe он генерирует многомерные массивы: везде ElementA используется, он ставит ElementC[][][].Для каждой глубины одно измерение.Есть ли способ остановить xsd.exe, делая это?

Например, XSD определяет элемент с именем carList, который содержит только теги car (от нуля до бесконечного «car»).xsd.exe должен затем создать класс с именем carList, который содержит только одномерный массив или список автомобилей.Вместо этого, где бы не использовался carList, он ставит car[][].Не нравится.

Еще один вопрос, есть ли способ генерировать XML, который соответствует данному XSD, кроме генерации классов, которые будут заполнены и сериализованы?

1 Ответ

2 голосов
/ 15 ноября 2011

Я также использую xsd.exe и не знаю лучшего способа, по крайней мере для платформы .NET.

После создания файла схемы XSD из XML вам необходимо изменить диапазоны измерений в XSDЗатем файл сгенерирует класс.Потому что измерения в XML неясны.В данный момент у вас может быть один узел, но, возможно, вы сможете добавить больше в будущем.Правила не определены.По этой причине вам необходимо отредактировать XSD вручную перед генерацией файлов кода.

...