plus strictes XmlSerializer qui ne permet pas de nœuds inutilisés
-
11-12-2019 - |
Question
J'ai généré classes C# basé sur XSD à l'aide de la xsd.exe l'outil du SDK.Alors je peux utiliser cette classe à [de]sérialiser des objets à l'aide de XmlSerializer...Cependant, le processus semble être très indulgent.
Est-il possible que je peux faire le sérialiseur lever une exception dans le cas où il manque un bien ou d'un "étrange" nœud XML?
Je pense qu'une voie est de modifier le setter de la propriété et de le faire valider les données (ou utilisez validation XSD)...Cependant est-il une autre solution pour ce problème ?
La solution
Vous pouvez mettre en œuvre la IXmlSerializable
interface et dans le ReadXml
méthode mise en œuvre, de vérifier les éléments spécifiques que vous avez besoin de lever des exceptions lorsque vous ne trouvez pas (ou quel que soit le réglage de notification vous avez besoin).
Si vous souhaitez utiliser un schéma de validation (pour utiliser le minOccurs
et maxOccurs
les attributs de schéma, par exemple), vous pouvez configurer l' XmlReader
exemple pour la validation du schéma par le réglage de la Schemas
propriété sur le XmlReaderSettings
classe que vous transmettez à l' Create
méthode (remarque: il existe des surcharges de Create
qui prennent un TextReader
, etc.).