генерировать классы из схемы xsd без наследования - PullRequest
1 голос
/ 15 июня 2011

У меня есть ряд довольно сложных файлов схемы xsd, и я хотел бы создать из них классы c #.Я использую xsd.exe в Visual Studio 8 и классы генерируются нормально.Однако я бы хотел обойти наследование, то есть никакие классы не должны наследоваться от родительского класса.

Мне это нужно, потому что я создаю веб-службу с этими классами в качестве параметров для методов веб-службы.Wsdl для веб-службы генерирует теги для этих дочерних классов.Насколько я понимаю, SAP не принимает теги расширения при создании клиента веб-службы.Поэтому мне нужно обойти это.

Любая помощь очень ценится.

1 Ответ

1 голос
/ 15 июня 2011

XML-схема разрешает наследование через элемент xs:extension, который позволяет изменять базовую complexType.При отображении этой XML-схемы в C # (или Java) имеет смысл сопоставить это с наследованием классов.

Так что я думаю, что вы хотите сделать, а не отображать иерархию наследования, когда xs:extensionвстречаются, вы хотите вместо этого скопировать расширенные свойства в сгенерированный класс, то есть перенести все методы суперкласса в подкласс.Я очень сомневаюсь, что вы найдете инструмент, который будет иметь это в качестве опции, это довольно непонятное требование!

Лично я бы решил это, преобразовав вашу XML-схему в желаемую структуру, а затем используя вашу схему-to-C # инструмент.Подходящая технология для этого преобразования - XSLT.Однако вы можете написать свой собственный инструмент, используя Linq-to-XML или другие API-интерфейсы для работы с XML.

...