1

我为 WSDL 创建了一个 Web 引用(也尝试过服务引用),该 WSDL 在 xsd 中有以下节点:

  <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>

创建客户端代理类时,它会生成以下内容:

'''<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

这不会在 VB 项目中构建,因为 VB.NET 不区分大小写。我尝试删除一组和/或,但是在创建 XML 时,它只是忽略了选定的值。我还尝试在一个也失败的集合的末尾附加一个 X。

有没有办法使这项工作?我还尝试更新 XSD,所以它只有两个值但没有成功。有趣的是,默认设置为“and”,在调试时会将其设置为and,它实际上并不会产生它的节点属性,它只是生成。

4

1 回答 1

0

您根本不能有两个具有相同名称的枚举。您可以尝试设置 AllowMultiple 属性,但您遇到的问题仍然会发生。我的建议是删除原始 XSD 中的重复值并重建。

于 2012-04-16T03:20:25.973 回答