XSD代码生成器空节点

时间:2012-07-24 10:03:02

标签: c# xml xsd xsd.exe

我已经提供了一个XSD文件,我使用XSD.exe生成了代码,但它没有按照我期望的方式运行。

    <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才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

我自己解决了这个问题。我提供的XSD需要更改为

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

minOccurs和maxOccurs位于错误的位置。