xmlスキームからxsd-toolを使用してcs-classesを生成しました。 スキームは、umlクラスの記述から生成される非常に複雑なスキームです。 ここでは、生成されたxsdクラスの機能を保証するための簡単なテストを作成しました。 テストではXmlSerializer
を使用してxmlファイルを作成します。すべての必須要素を作成する強制によるXMLシリアル化の方法
私のXSDスキームには、いくつかの義務的な要素があります(xsd-defaultによるとminocc=1
とmaxocc=1
という定義があります)。例えば
(簡体字):
<xs:element name="order">
<xs:complexType>
...
<xs:element name="orderId" type="string"/>
<xs:element name="material" type="Material"/>
...
<xs:complexType>
材料は、いくつかの要素で構成されて複合型です。それは注文の一部です。
これらの要素は、空の要素または空の要素のみを含む場合でも、結果のXMLファイルに常に存在する必要があります。ここで、クラスインスタンスをxmlファイルにシリアル化すると、class-propertysに値が含まれている要素だけが表示されます。 orderIdを設定した場合、orderId要素は表示されますが、class要素のインスタンスではnullですので、material要素は表示されません。その結果、私のxml-fileはxsd-schemaに対して有効ではありません。
シリアル化中に結果のxmlファイルをxsdファイルで検証する方法がありますか? XmlSerializer
には常に必須の要素(おそらくデフォルト値)を生成するべきであると伝える方法はありますか? または、シリアル化するクラスインスタンスの構造を検証する方法がありますか?
いつも 'null'以外の値を指定できますか? –
私が持っている問題は、xsd-schemaとその結果のクラス構造が非常に複雑で、必要のないすべてのプロパティを設定したくないということです。 – martin
しかし確かにxsdはあなたに彼らが*必要とされていることを伝えています... –