2012-04-15 1 views
1

J'ai créé une référence Web (également essayé le service de référence) à un WSDL qui avait le noeud suivant dans un xsd:VB.NET cas Insensible Web énumération Référence Problème

<xs:element name="filter"> 
    <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element minOccurs="0" maxOccurs="unbounded" ref="condition" /> 
     <xs:element minOccurs="0" maxOccurs="unbounded" ref="filter" /> 
     </xs:choice> 
     <xs:attribute default="and" name="type"> 
     <xs:simpleType> 
      <xs:restriction base="xs:NMTOKEN"> 
      <xs:enumeration value="and" /> 
      <xs:enumeration value="or" /> 
      <xs:enumeration value="AND" /> 
      <xs:enumeration value="OR" /> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:attribute> 
     <xs:attribute default="false" name="not" type="xs:boolean" /> 
    </xs:complexType> 
    </xs:element> 

Lorsque la classe proxy client est créé produit ceci:

'''<remarks/> 
<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.225"), _ 
System.SerializableAttribute(), _ 
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true, [Namespace]:="urn://wsc.acme.com/dm/2010/02/02")> _ 
Public Enum filterType 

    '''<remarks/> 
    [and] 

    '''<remarks/> 
    [or] 

    '''<remarks/> 
    [AND] 

    '''<remarks/> 
    [OR] 
End Enum 

Ceci ne se construirait pas dans un projet VB car VB.NET est insensible à la casse. J'ai essayé de supprimer un ensemble de et/ou, mais quand le XML est créé, il ignore simplement la valeur sélectionnée. J'ai également essayé d'ajouter un X à la fin de l'un des jeux qui a également échoué.

Existe-t-il un moyen de faire fonctionner ce système? J'ai également essayé de mettre à jour le XSD donc il avait juste deux valeurs sans succès. La chose intéressante à noter est que la valeur par défaut est "et" et, pendant le débogage, elle la mettra à "et", elle ne produira pas l'attribut "node" généré.

Répondre

0

Vous ne pouvez pas avoir deux énumérations du même nom. Vous pouvez essayer de définir l'attribut AllowMultiple mais le problème que vous rencontrez survient toujours. Ma suggestion serait de supprimer les valeurs en double dans le XSD d'origine et de reconstruire.