1

xsd 内に次のノードを持つ WSDL への Web 参照 (サービス参照も試しました) を作成しました。

  <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.NET は大文字と小文字を区別しないため、これは VB プロジェクトではビルドされません。and/or の 1 つのセットを削除しようとしましたが、XML が作成されると、選択した値が単に無視されます。また、失敗したセットの最後に X を追加しようとしました。

これを機能させる方法はありますか?また、XSD の更新を試みたので、成功せずに 2 つの値しかありませんでした。注意すべき興味深い点は、デフォルトが「and」に設定されており、デバッグ中に and に設定され、実際にはノード属性を生成せず、生成するだけであるということです。

4

1 に答える 1

0

同じ名前の列挙型を 2 つ持つことはできません。AllowMultiple 属性を設定してみることができますが、発生している問題は引き続き発生します。私の提案は、元の XSD の重複した値を削除して再構築することです。

于 2012-04-16T03:20:25.973 に答える