13

我无法真正解释 XSD 生成器的奇怪行为。我有一个这样的 XSD:

<xs:complexType name="StageSequenceElement" mixed="false">
    <xs:complexContent>
        <xs:extension base="CoreObject">
            <xs:sequence>
                <xs:element name="Description" type="xs:string" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>Some Doc</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="StageRef" type="ObjectReference">
                    <xs:annotation>
                        <xs:documentation>...</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="MinDuration_100ms" type="xs:int" nillable="true" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>...</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="MaxDuration_100ms" type="xs:int" nillable="true">
                    <xs:annotation>
                        <xs:documentation>...</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="StageOnDemand" type="xs:boolean" nillable="true" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>...</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

它是从 CoreObject 派生的:

<xs:complexType name="CoreObject">
    <xs:sequence>
        <xs:element name="No" type="xs:int">
            <xs:annotation>
                <xs:documentation>...</xs:documentation>
            </xs:annotation>
        </xs:element>
    </xs:sequence>
</xs:complexType>

这只是 XSD 的一小部分,还有很多更复杂的类型。

因此,当我生成与此类似的类时我得到了一个生成的类,它还有两个属性(除了我期望的 5 个属性):

public bool MinDuration_100msSpecified

public bool StageOnDemandSpecified

所以“原始”属性“指定”被附加,类型现在是布尔值。谁能解释为什么会这样?

4

2 回答 2

12

属性意味着相关的bool属性应该被序列化。

例如

如果bool MinDuration_100msSpecified设置为false,而您将 设置MinDuration_100ms300,则当您用于XmlSerializer序列化对象时,该MinDuration_100ms属性将不会被序列化。

此功能可以将序列化的 xml 文件保存到最小。

于 2012-09-30T00:56:49.543 回答
2

设置minOccurs="1"其中元素是可空的。例如:

<xs:element name="StageOnDemand" type="xs:boolean" nillable="true" minOccurs="1" />
于 2014-12-12T15:18:05.060 回答