2009-10-28 6 views
0

J'ai des structures XML très similaires qui sont en fait assez distinctes, mais il semble que XmlSerializer.Deserialize est très "indulgent" et va faire de son mieux pour prendre XML et désérialiser dans un objet fortement typé que j'ai créé à partir du XSD source. Y a-t-il un moyen de le rendre plus strict ou de faire un type de validation plus approfondie?Comment rendre XmlSerializer.Deserialize plus strict?

// Locals 
var serializer = new XmlSerializer(typeof(SomeCustomType)); 

// Set 
var someInstance = serializer.Deserialize(new StringReader(xmlString.ToString())) 

Parce que les nœuds @ Jeff racines sont semblables il désérialiser des objets complètement différents. Imaginez que vous avez une maison, une voiture et un bateau et qu'ils partagent tous un nœud racine appelé élément avec quelques attributs. Même si les sous-noeuds sont invalides et non partagés, il semble oublier et pardonner cela.

@Will Je ne veux pas valider par rapport au XSD. Je veux d'une manière ou d'une autre amener le Deserializer à voir que les données qu'il possède ne doivent pas être cornées dans le mauvais type d'objet.

+0

Pourriez-vous énumérer une manière spécifique dans laquelle il est trop indulgent? J'imagine que ces questions pourraient être traitées au cas par cas. –

+0

Je le vérifierais contre un xsd et partirais de là ... – Will

Répondre

0

Le problème était que l'entrée XML était incorrecte.

0

Une fois, j'ai utilisé un lecteur de validation pour valider le XML par rapport au schéma tel que je le lisais dans le désérialiseur.

Questions connexes