Есть ли способ экспортировать схему XSD из DataContract

Я использую DataContractSerializer для сериализирования/десериализовывания моих классов к/от XML. Все хорошо работает, но в какой-то момент я хотел бы установить стандартную схему для формата этих XML-файлов, независимых от фактического кода. Тот путь, если что-то прерывает процесс сериализации, я могу всегда возвращаться и проверять, какова стандартная схема должна быть. Или если я действительно должен изменить схему, модификация является явным решением скорее затем просто более позднее влияние изменения моего кода.

Кроме того, другие люди могут писать другое программное обеспечение, которое не может быть.NET, базирующейся, который должен будет читать из этих XML-файлов. Я хотел бы смочь предоставить им некоторую документацию схемы.

Есть ли некоторые отношения между DataContract и схемой XSD. Существует ли способ экспортировать атрибуты DataContract в классах как схема XSD?

9
задан Eric Anastas 8 April 2010 в 23:02
поделиться

2 ответа

Svcutil.exe может «экспортировать метаданные для контрактов на скомпилированные данные» .
Существует связь между DataContract и XSD :

DataContractSerializer сопоставляет типы CLR с XSD, когда метаданные экспортируются из службы Windows Communication Foundation (WCF) с использованием конечной точки метаданных или служебный инструмент метаданных ServiceModel (Svcutil.exe). Дополнительные сведения см. В разделе Сериализатор контракта данных.

DataContractSerializer также сопоставляет XSD с типами CLR, когда Svcutil.exe используется для доступа к документам языка описания веб-служб (WSDL) или XSD и создания контрактов на данные для служб или клиентов.

Вы также можете получить XSD во время выполнения, даже в своем браузере, настроив конечную точку MEX .
WSDL по умолчанию будет содержать ссылки на XSD, к которым также можно получить доступ через конечную точку.

4
ответ дан 4 December 2019 в 13:46
поделиться

Вы можете создать файлы схемы из DataContracts с помощью инструмента svcutil.exe, который поставляется с Visual Studio.

svcutil myAssembly.dll
   - Generate metadata documents for Service Contracts and associated types in an assembly

svcutil myServiceHost.exe /serviceName:myServiceName
   - Generate metadata documents for a service, and all associated Service Contracts and data types in an assembly

svcutil myServiceHost.exe /dconly
   - Generate metadata documents for data types in an assembly

Я полагаю, что однажды в прошлом я напортачил с этим, и, возможно, это работало, а возможно, и нет. Еще один простой способ создания схем - запустить службу WCF, которая использует ваши контракты данных, и получить доступ к WSDL. WSDL импортирует все xsds для DataContracts.

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

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