Генерация классов .Net из XSD с объединением - PullRequest
0 голосов
/ 11 ноября 2009

Я работал над созданием классов, представляющих спецификацию HR-Xml 3 для автономных пакетов, связанных с Screening. У меня было несколько проблем, но в настоящее время я считаю, что основная проблема заключается в отсутствии поддержки в xsd.exe для оператора xsd: union.

Когда Xsd.exe встречает простой тип определяется союзом, он игнорирует определение и использует встроенный строковый тип данных в его место.
От - http://msdn.microsoft.com/en-us/library/bc57azyw%28VS.85%29.aspx

Единственное решение, которое я видел на различных форумах и в группах новостей, - это реструктурировать XSD, чтобы не использовать объединение? Однако даже с небольшим подмножеством сущностей, в котором я нуждаюсь, число операторов объединения приближается к 100. Возможно, это единственное решение?

Я застрял в этом в течение нескольких дней и не смог найти ничего по-настоящему полезного, кроме «Нет, это не работает». В конце концов, мне нужно , чтобы все заработало. Любые предложения для инструментов, редизайн, конвертеры, все, что может получить эти классы! Я даже начал задумываться о создании классов Java и их преобразовании в C # ... Я в растерянности

Заранее спасибо! Я, конечно, надеюсь, что есть какое-то решение для этого!


В итоге мы приняли решение, что не будем внедрять HR-Xml на первом этапе, возможно, когда мы вернемся к нему, мне повезет больше. Тем не менее, если кто-то прочитает это и у него есть какие-либо предложения, пожалуйста, оставьте отзыв, так как я планирую некоторое время контролировать это.

1 Ответ

0 голосов
/ 11 ноября 2009

Две вещи, которые вы можете попробовать довольно легко и быстро увидеть, если они оказывают какую-либо помощь:

  • использовать утилиту WCF svcutil.exe (с переключателем /dconly) вместо xsd.exe - это попытается создать класс на основе WCF DataContractSerializer, который может обрабатывать несколько вещи лучше, чем стандартный .NET XML Serializer

  • попробуйте альтернативный генератор "XSD-to-code", например что-то вроде Xsd2Code в Codeplex

Марк

...