Exportación de esquemas desde las clases
Para generar esquemas (XSD) de lenguaje de definición de esquemas XML a partir de las clases utilizadas en el modelo de contrato de datos, utilice la clase XsdDataContractExporter . En este tema se describe el proceso para crear los esquemas.
Proceso de exportación
El proceso de exportación de esquema se inicia con uno o más tipos y genera un XmlSchemaSet que describe la proyección de XML de estos tipos.
XmlSchemaSet
forma parte del Modelo de objetos de esquemas (SOM) de .NET Framework que representa un conjunto de documentos esquema XSD. Para crear documentos XSD a partir de XmlSchemaSet
, utilice la colección de esquemas de la propiedad Schemas de la clase XmlSchemaSet
. A continuación, serialice cada objeto XmlSchema mediante XmlSerializer.
Exportar esquemas
Creación de una instancia de XsdDataContractExporter.
Opcional. Pase XmlSchemaSet en el constructor. En este caso, el esquema generado durante la exportación del esquema se agrega a esta instancia XmlSchemaSet en lugar de iniciarse con un XmlSchemaSeten blanco.
Opcional. Llame a uno de los métodos CanExport. El método determina si se puede exportar el tipo especificado. El método tiene las mismas sobrecargas que el método
Export
en el siguiente paso.Llame a uno de los métodos Export. Hay tres sobrecargas que toman Type, List<T> de los objetos
Type
, o List<T> de los objetos Assembly . En el último caso, se exportan todos los tipos de todos los ensamblados determinados.Varias llamadas al método
Export
produce como resultado varios elementos que se agregan al mismoXmlSchemaSet
. Un tipo no se genera enXmlSchemaSet
si ya existe en este. Por consiguiente, llamar varias vecesExport
en el mismoXsdDataContractExporter
es preferible a crear varias instancias de la claseXsdDataContractExporter
. Esto evita que se generen tipos de esquema duplicados.Nota
Si se produce un error durante la exportación,
XmlSchemaSet
estará en un estado imprevisible.Obtenga acceso a XmlSchemaSet a través de la propiedad Schemas .
Exportar opciones.
Puede establecer la propiedad Options de XsdDataContractExporter a una instancia de ExportOptions para administrar varios aspectos del proceso de exportación. En concreto, puede establecer las opciones siguientes:
KnownTypes. Esta colección de
Type
representa los tipos conocidos para los tipos que se van a exportar. (Para más información, consulte Tipos conocidos de contratos de datos). Estos tipos conocidos se exportan en todas las llamadas deExport
, además de los tipos que se pasan al métodoExport
.DataContractSurrogate. IDataContractSurrogate se puede proporcionar a través de esta propiedad que personalizará el proceso de exportación. Para más información, consulte Suplentes de contratos de datos. De forma predeterminada, no se utiliza ningún suplente.
métodos del asistente
Además de su función primaria de exportar el esquema, XsdDataContractExporter
proporciona varios métodos del asistente útiles que proporcionan información sobre los tipos. Entre ellas se incluyen las siguientes:
Método GetRootElementName. Este método toma
Type
y devuelve XmlQualifiedName que representa el nombre del elemento raíz y espacio de nombres que se utilizarían si este tipo se serializara como objeto raíz.Método GetSchemaTypeName. Este método toma
Type
y devuelve XmlQualifiedName que representa el nombre del tipo de esquema XSD que se utilizaría si este tipo se exportara al esquema. Para los tipos IXmlSerializable representados como tipos anónimos en el esquema, este método devuelvenull
.Método GetSchemaType. Este método solo funciona con tipos IXmlSerializable representados como tipos anónimos en el esquema y devuelve
null
para el resto de tipos. Para los tipos anónimos, este método devuelve XmlSchemaType que representa unType
determinado.
Las opciones de exportación afectan a todos estos métodos.