2012-07-25 3 views
0

J'ai généré des classes C# basées sur XSD en utilisant l'outil xsd.exe du SDK. Ensuite, je peux utiliser cette classe pour [de] sérialiser des objets en utilisant XmlSerializer ... Cependant, le sérialiseur semble être très tolérant.XmlSerializer plus strict qui n'autorise pas les nœuds inutilisés

Est-il possible que je puisse faire en sorte que le sérialiseur lance une exception en cas de propriété manquante ou d'un nœud XML "étrange"?

Je pense qu'une façon est de modifier le setter de la propriété et lui faire valider les données (ou utiliser la validation XSD) ... Cependant, existe-t-il une autre solution alternative à ce problème?

+0

https://acme.newprod.econometrix.com/ClientBin/Trescreatus.Econometrix.DataVisualization.SpendAnalysis.xap –

Répondre

2

Vous pouvez implémenter le IXmlSerializable interface et dans l'implémentation ReadXml method, vérifiez les éléments spécifiques dont vous avez besoin, en lançant des exceptions lorsque vous ne les trouvez pas (ou en définissant toute notification dont vous avez besoin).

Si vous souhaitez utiliser un schéma de validation (pour utiliser le minOccurs and maxOccurs schema attributes, par exemple), vous pouvez configurer l'instance XmlReader pour valider par rapport au schéma en définissant le Schemas property sur le XmlReaderSettings class que vous passez à la Create method (note il y a des surcharges de Create qui prennent un TextReader, etc.).

+0

Merci ... Je suppose que je vais aller avec la validation du schéma :) – HostMAX

Questions connexes