0

XSD.exe を使用してコードを生成した XSD ファイルが提供されましたが、期待どおりに機能していません。

    <xsd:element name="Claims">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element maxOccurs="unbounded" name="Claim" minOccurs="0">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="ClaimDate" type="xsd:dateTime" />
                <xsd:element name="ClaimDesc" type="xsd:string" />
                ....
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>

クレームがない場合、空のノードが送信されますが、生成されたコードは次のようになります。

[System.Xml.Serialization.XmlArrayItemAttribute("Claim", IsNullable=false)]
public QuoteRequestClaim[] Claims {
    get {
        return this.claimsField;
    }
    set {
        this.claimsField = value;
    }
}

つまり、この空のノードを通過させることはできません。これは XSD.exe の癖ですか、それとも、これを機能させるには XSD を変更する必要がありますか?

4

1 に答える 1

1

私はこれを自分で解決しました。提供されていた XSD を変更する必要がありました

<xsd:sequence maxOccurs="unbounded" minOccurs="0">
      <xsd:element name="Claim">
      </xsd:element>
</xsd:sequence>

minOccurs と maxOccurs が間違った場所にありました。

于 2012-07-24T10:29:41.517 に答える