Vérification de la conformité des données avec XmlReader
Mise à jour : November 2007
Des objets XmlReader créés par la méthode Create sont, par défaut, plus conformes que l'implémentation d'objets XmlTextReader. Des objets XmlReader créés par la méthode Create prennent en charge les fonctionnalités suivantes par défaut :
Normalisation des caractères de nouvelle ligne
Développement des entités
Ajout d'attributs par défaut
Les propriétés XmlReaderSettings.CheckCharacters et XmlReaderSettings.ConformanceLevel permettent de spécifier le type de vérifications de conformité à activer pour l'objet XmlReader créé.
Paramètre CheckCharacters
La propriété CheckCharacters de la classe XmlReaderSettings demande au lecteur de vérifier les caractères et de lever un objet XmlException si des caractères se trouvent hors de la portée des caractères XML légaux. Lorsque la vérification des caractères est activée, vous êtes assuré que :
tous les caractères du document se trouvent dans la portée des caractères XML légaux, définis par la recommandation du W3C sur XML 1.0 ;
tous les noms XML sont valides. Par exemple, si le nom d'un élément commence par un nombre, un objet XmlException est levé. Pour plus d'informations, voir http://www.w3.org/TR/REC-xml\#NT-Name.
Par défaut, la vérification de caractères est activée. Si le lecteur traite des données de texte, il vérifie toujours que les noms XML sont valides, même lorsque la propriété CheckCharacters est définie sur false.
Paramètre ConformanceLevel
La propriété ConformanceLevel de la classe XmlReaderSettings configure l'objet XmlReader pour vérifier et garantir que le flux en cours de lecture respecte un certain ensemble de règles. En fonction du niveau de conformité spécifié, les données XML peuvent être vérifiées pour voir si elles sont conformes aux règles d'un document ou d'un fragment de document XML 1.0 correctement construit. Si les données ne sont pas conformes, un objet XmlException est levé. Le paramètre par défaut est ConformanceLevel.Document.
Remarque : |
---|
Si le lecteur est configuré pour la prise en charge de ConformanceLevel.Fragment, mais si les données XML contiennent une DTD (définition de type de document), un objet XmlException est levé. La recommandation XML 1.0 nécessite une conformité au niveau du document lorsqu'une DTD est présente. |
Valeur ConformanceLevel |
Description |
||
---|---|---|---|
Document |
Les données XML sont conformes aux règles d'un document XML 1.0 correctement construit. Ce niveau de vérification garantit que tout processeur peut utiliser le flux en lecture comme un document XML 1.0. Le lecteur vérifie les éléments suivants :
|
||
Fragment |
Les données XML sont conformes aux règles d'un fragment de document XML 1.0 correctement construit. Ce paramètre accepte les données XML avec plusieurs éléments racines ou nœuds de texte de niveau supérieur. Ce niveau de vérification garantit que tout processeur peut utiliser le flux en lecture comme uneentité externe XML 1.0 analysée.
|
||
Auto |
Le lecteur décide du niveau de la vérification de conformité à appliquer en fonction des données entrantes. La vérification de conformité du document est appliquée si les données XML contiennent des informations sur la DTD. La vérification de conformité du fragment est appliquée si les données XML contiennent l'un des éléments suivants :
Un objet XmlException est levé en cas de conflit, par exemple lorsqu'il y a un nœud de texte ou une DTD au niveau racine. Ce paramètre peut être utilisé dans des scénarios englobants lorsque la méthode Create permet d'ajouter des fonctionnalités supplémentaires à un objet XmlReader existant. Dans ce cas, ConformanceLevel.Auto n'ajoute pas de nouvelle vérification de conformité. La vérification de conformité est appliquée à l'objet XmlReader qui est enveloppé. |
Objets XmlTextReader, XmlValidatingReader et XmlNodeReader
Le paramètre ConformanceLevel présente le comportement suivant lorsqu'il travaille avec les objets XmlTextReader, XmlValidatingReader ou XmlNodeReader.
Si l'objet XmlReader n'a pas été créé à l'aide de la méthode Create, le niveau de conformité supposé est Document. Par conséquent, si vous décidez d'envelopper cette instance de l'objet XmlReader dans un autre objet XmlReader, lors de la création du nouvel objet XmlReader, le niveau de conformité spécifié doit être Document ou Auto.
Si l'objet XmlTextReader ou XmlValidatingReader sous-jacent a été construit à l'aide de l'objet XmlParserContext et de XmlNodeType.Element, le paramètre Fragment peut également être appliqué.
Exemple
Le code suivant crée un lecteur qui oblige la conformité au niveau du fragment.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader as XmlReader = XmlReader.Create(new StringReader(xmlString), settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlString), settings);