XmlSerializerを使用してオブジェクトをシリアル化し、XSDで定義された順序を使用したいとします。私は、このためのスタブ・クラスを作成するためにXsd.exeではを使用しているオブジェクトをシリアライズし、xs:groupの順序を維持する
...
<xs:element name="Screen" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Yaxis" minOccurs="1" maxOccurs="1" type="ab:AxisType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
...
<xs:complexType name="AxisType">
<xs:sequence>
<xs:group ref="ab:IntervalSegmentGroup" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="LastPoint" minOccurs="1" maxOccurs="1" type="ab:PointType" />
</xs:sequence>
</xs:complexType>
<xs:group name="IntervalSegmentGroup">
<xs:sequence>
<xs:element name="Point" minOccurs="1" maxOccurs="1" type="ab:PointType"/>
<xs:element name="Interpolation" minOccurs="1" maxOccurs="1" type="xs:string"/>
</xs:sequence>
</xs:group>
<xs:complexType name="PointType">
<xs:sequence>
<xs:element name="Relative" type="xs:decimal" minOccurs="1" maxOccurs="1"/>
<xs:element name="Absolute" type="xs:decimal" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
...
:
は、例えば、私はこのような要素を持つXSDを持っています。 次に、これらのクラスからオブジェクトを作成し、それらにデータを取り込みます。そして、私はXMLSerializerでそれらをシリアル化します。
私が取得したい結果はこのようなものです:
...
<Yaxis>
<Point>
<Relative>0</Relative>
<Absolute>0</Absolute>
</Point>
<Interpolation>linear</Interpolation>
<Point>
<Relative>0.456</Relative>
<Absolute>100</Absolute>
</Point>
<Interpolation>linear</Interpolation>
<Point>
<Relative>0.645</Relative>
<Absolute>342</Absolute>
</Point>
<Interpolation>linear</Interpolation>
<LastPoint>
<Relative>1</Relative>
<Absolute>3920</Absolute>
</LastPoint>
</Yaxis>
...
しかし、私は何を得ることである:
...
<Yaxis>
<Point>
<Relative>0</Relative>
<Absolute>0</Absolute>
</Point>
<Point>
<Relative>0.456</Relative>
<Absolute>100</Absolute>
</Point>
<Point>
<Relative>0.645</Relative>
<Absolute>342</Absolute>
</Point>
<Interpolation>linear</Interpolation>
<Interpolation>linear</Interpolation>
<Interpolation>linear</Interpolation>
<LastPoint>
<Relative>1</Relative>
<Absolute>3920</Absolute>
</LastPoint>
</Yaxis>
...
私はそれが失敗しますXSDに対してXMLを検証しようとして、ポイント、補間、ポイントを確認していません...
何が間違っていますか?これを何らかの方法で制御できますか?
おそらく、 'XSD.exe'によって作成されたスタブクラスは、そのように命じられています。可能であれば、得られたスタブクラスを投稿して、質問に答えるのに役立てるかもしれません。 –