REVISIÓN: Los atributos cualificados de los esquemas XML no se serializan correctamente

Exención de responsabilidades de contenido KB retirado

Este artículo se refiere a productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Síntomas

Las declaraciones en el código de genera WSDL o XSD correctas no generen atributos completos en un esquema XML.

Solución

Ahora hay una revisión compatible de Microsoft, pero sólo se diseñó para corregir el problema que se describe en este artículo. Sólo se aplica a sistemas que experimenten este problema específico. Esta revisión puede ser sometida a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere al próximo Microsoft.NET Framework Service Pack que contenga esta revisión.

Para resolver este problema inmediatamente, póngase en contacto con los servicios de soporte técnico de Microsoft para obtener la revisión. Para obtener una lista completa de números de teléfono de servicios de soporte técnico de Microsoft e información acerca de los costos de soporte técnico, visite el siguiente sitio Web de Microsoft:Nota: en casos especiales, los gastos derivados de las llamadas al soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft determina que una actualización específica resolverá el problema. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con la actualización en cuestión.

La versión en inglés de esta revisión tiene los atributos de archivo (o posterior) que figuran en la tabla siguiente. Las fechas y horas de estos archivos se muestran en hora universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha zona horaria en la herramienta fecha y hora del Panel de Control.

Date Time Version Size File name Platform
--------------------------------------------------------------------------
31-Jul-2002 11:27 1.0.3705.299 1,298,432 System.Xml.dll i386


Solución alternativa

Para evitar este problema, agregue manualmente las declaraciones de XmlSchemaForm.Qualified al código generado.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

De forma predeterminada, el.NET Framework supone que los atributos no declaradas son Unqualified. Esto puede crear errores cuando no se declara un atributo como un atributo completo .

Pasos para reproducir el comportamiento

Para reproducir el problema, siga estos pasos:
  1. Cree un archivo denominado Test.xsd que contiene el esquema siguiente:
    <xs:schema elementFormDefault="unqualified"    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="purchaseOrder" type="PurchaseOrderType" />
    <xs:complexType name="PurchaseOrderType">
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="shipTo"
    type="xs:string" />
    </xs:sequence>
    <xs:attribute form="unqualified" name="a1" type="xs:string" />
    <xs:attribute form="qualified" name="a2" type="xs:string" />
    <xs:attribute name="a3" type="xs:string" />
    </xs:complexType>
    </xs:schema>

  2. En el símbolo de Visual Studio .NET o Microsoft.NET Framework, escriba xsd /c test.xsdy, a continuación, presione ENTRAR.
Este comando crea un archivo denominado Test.cs que contiene el código generado. Este código incluye lo siguiente:
[System.Xml.Serialization.XmlElementAttribute      (Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string shipTo;

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute
(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string a1;

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string a2;

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string a3;

Después de aplicar la revisión, el código generado es el siguiente:
[System.Xml.Serialization.XmlElementAttribute      (Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string shipTo;

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string a1;

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute
(Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string a2;

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string a3;

Propiedades

Id. de artículo: 327071 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios