0

SDKのxsd.exeツールを使用して、XSDに基づいてC#クラスを生成しました。次に、そのクラスを使用して、XmlSerializerを使用してオブジェクトを[逆]シリアル化できます...ただし、シリアライザーは非常に寛容なようです。

プロパティが欠落している場合や「奇妙な」XMLノードがある場合に、シリアライザーに例外をスローさせることはできますか?

1つの方法は、プロパティのセッターを変更してデータを検証する(またはXSD検証を使用する)ことだと思います...しかし、この問題に対する他の代替ソリューションはありますか?

4

1 に答える 1

2

IXmlSerializableインターフェイスを実装し、ReadXmlメソッドの実装で、必要な特定の要素を確認し、それらが見つからない場合は例外をスローします(または必要な通知を設定します)。

検証にスキーマを使用する場合(たとえば、minOccursおよびmaxOccursスキーマ属性を使用する場合)、メソッドに渡すクラスのプロパティXmlReader設定することで、スキーマに対して検証するようにインスタンスを構成できます(オーバーロードがあることに注意してください)。そのうち、などを取ります)。SchemasXmlReaderSettingsCreateCreateTextReader

于 2012-07-25T16:34:12.113 に答える