2010-04-08 3 views
8

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

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

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

ответ

4

Svcutil.exe can "export metadata for compiled data contracts".
Существует связь между DataContract and XSD:

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

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

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

3

Возможно, вы можете создавать файлы схемы из 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.

Смежные вопросы