2011-03-28 8 views
0

Est-il possible d'utiliser la validation XML Schema et XMLSerializer ensemble?XMLSerialization et XML Schema validation

Mon projet utilise actuellement XMLSerializer. Pour valider le schéma, nous vérifions par programme les valeurs comme:

if(String.IsNullOrEmpty(person.Name)) 
    throw new Exception(); 

Merci!

+0

est l'information de «validation» présente dans le schéma? Ou le xml est-il vérifié par rapport aux règles qui ne sont pas dans le schéma? –

+0

Question similaire: [validation du schéma XML] (http://stackoverflow.com/questions/4584080/schema-validation-xml/4639448#4639448) –

+0

@Devendra: Actuellement, les règles de validation sont implémentées dans le code. Mais s'il est possible d'utiliser la validation de schéma XML, les informations de validation seront placées sur un fichier XSD. – Ian

Répondre

1

Je suggère d'utiliser XmlValidatingReader pour valider le schéma. S'il vous plaît voir http://www.codeproject.com/KB/XML/Serialization.aspx pour un exemple ...

+0

Le XMLValidatingReader a été abandonné dans .NET 2.0 La classe XmlValidatingReader est obsolète dans Microsoft .NET Framework version 2.0. Vous pouvez créer une instance XmlReader de validation en utilisant la classe XmlReaderSettings et la méthode Create. Pour plus d'informations, consultez Validation des données XML avec XmlReader. –

0

En fait, vous pouvez simplement fournir un XSD dans le XML. Lorsque vous le lisez à l'aide du XMLSerializer, il lance des exceptions si le XML ne correspond pas à la XSD.

2

Vous pouvez ajouter des vérifications supplémentaires à xsd en utilisant l'élément de restriction d'élément. Chaque type a des facettes que vous pouvez appliquer au type/élément - allant de la simple longueur min/max aux expressions régulières.

Vous pouvez même aller plus loin et utiliser l'élément appinfo xsd, où vous pouvez ajouter des spécifications personnalisées pour la vérification de validation etc. Cette étape nécessite toutefois que vous analysiez chaque nœud xml individuellement, car la validation Xml Schema normale ne déclenche pas la fonctionnalité appinfo. En dernier recours, vous pouvez même jeter un coup d'œil à Schematron, qui est une manière formelle d'ajouter une validation assez complexe à votre xsd, mais elle est en elle-même un peu complexe et, dans de nombreuses situations, exagérée.