【问题标题】:Is there a way to export an XSD schema from a DataContract有没有办法从 DataContract 导出 XSD 架构
【发布时间】:2011-02-05 22:29:31
【问题描述】:

我正在使用 DataContractSerializer 将我的类序列化/反序列化到 XML。一切正常,但在某些时候,我想为这些 XML 文件的格式建立一个独立于实际代码的标准模式。这样,如果序列化过程中出现问题,我总是可以返回并检查标准模式应该是什么。或者,如果我确实需要修改架构,那么修改是一个明确的决定,而不仅仅是修改我的代码的后期影响。

此外,其他人可能正在编写其他可能不是基于 .NET 的软件,这些软件需要从这些 XML 文件中读取。我希望能够为他们提供某种架构文档。

DataContract 和 XSD 架构之间是否存在某种关系。有没有办法将类中的 DataContract 属性导出为 XSD 架构?

【问题讨论】:

    标签: c# .net xsd schema datacontract


    【解决方案1】:

    是的,您可以使用XsdDataContractExporter

    MSDN 文章Exporting Schemas from Classes 中提供了一个示例。

    【讨论】:

      【解决方案2】:

      Svcutil.exe can "export metadata for compiled data contracts".
      DataContract and XSD之间有关系:

      当使用元数据终结点或 ServiceModel 元数据实用工具 (Svcutil.exe) 从 Windows Communication Foundation (WCF) 服务导出元数据时,DataContractSerializer 会将 CLR 类型映射到 XSD。有关详细信息,请参阅数据协定序列化程序。

      当使用 Svcutil.exe 访问 Web 服务描述语言 (WSDL) 或 XSD 文档并为服务或客户端生成数据协定时,DataContractSerializer 还将 XSD 映射到 CLR 类型。

      您也可以通过setting upMEX endpoint 在运行时获取XSD,甚至在您的浏览器中。
      默认情况下,WSDL 将包含对可以通过端点访问的 XSD 的引用。

      【讨论】:

        【解决方案3】:

        您也许可以使用 Visual Studio 附带的 svcutil.exe 工具从 DataContracts 生成架构文件。

        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 将导入 DataContracts 的所有 xsd。

        【讨论】:

          猜你喜欢
          • 2017-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-03
          • 2019-08-02
          • 2015-07-12
          • 1970-01-01
          • 2012-01-16
          相关资源
          最近更新 更多