问题描述
如果 XML 元素中缺少定义为枚举列表的属性,如果未指定默认值,是否应将列表中的第一个值用作默认值?
我在架构中有以下内容:
<xsd:simpleType name="YesNoType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="yes"/>
<xsd:enumeration value="no"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="Telephonestructure">
<xsd:sequence>
<xsd:element name="TelNationalNumber" type="core:TelephoneNumberType"/>
<xsd:element name="TelExtensionNumber" type="core:TelephoneExtensionType" minOccurs="0"/>
<xsd:element name="TelCountryCode" type="core:TelCountryCodeType" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="TelUse" type="core:WorkHomeType"/>
<xsd:attribute name="TelMobile" type="core:YesNoType"/>
<xsd:attribute name="TelPreferred" type="core:YesNoType"/>
</xsd:complexType>
我已经从上述架构生成了 C# 类型。我预计缺少的属性会导致空值,但我发现缺少的属性默认为列表中的第一个值,根据 XML 规范,这是否正确?
解决方法
根据您的架构,只有 TelExtensionNumber
和 TelCountry code
是可选的。其他都不是可选的,因此将采用默认值(0 表示 int,null 表示类)。