Partager via


Création de lecteurs XML

Des instances de l'objet XmlReader sont créées à l'aide de la méthode Create. La classe XmlReaderSettings permet de spécifier l'ensemble de fonctionnalités à activer sur le nouvel objet XmlReader.

Remarque importanteImportant

Même si Microsoft .NET Framework intègre des implémentations concrètes de la classe XmlReader, comme les classes XmlTextReader, XmlNodeReader et XmlValidatingReader, dans .NET Framework version 2.0, il est recommandé de créer des instances de l'objet XmlReader à l'aide de la méthode Create.

Les fonctionnalités sont activées ou désactivées à l'aide des propriétés de la classe XmlReaderSettings. L'objet XmlReaderSettings est ensuite transmis à la méthode Create.

La méthode Create et la classe XmlReaderSettings offrent les avantages suivants :

  • Vous pouvez spécifier les fonctionnalités que l'objet XmlReader doit prendre en charge.

  • La classe XmlReaderSettings peut être réutilisée pour créer plusieurs objets de lecteur. Vous pouvez utiliser les mêmes paramètres pour créer plusieurs lecteurs avec la même fonctionnalité. Vous pouvez également modifier l'objet XmlReaderSettings et créer un nouveau lecteur avec différentes fonctionnalités.

  • Vous pouvez ajouter des fonctionnalités à un lecteur existant. La méthode Create peut accepter un autre objet XmlReader. L'objet XmlReader sous-jacent peut être un lecteur défini par l'utilisateur ou un objet XmlTextReader ou encore une autre instance de l'objet XmlReader à laquelle ajouter d'autres fonctionnalités.

  • Bénéficiez de toutes les nouvelles fonctionnalités ajoutées à la classe XmlReader dans .NET Framework version 2.0. Certaines fonctionnalités, comme une meilleure vérification de conformité et la conformité à la recommandation 1.0 sur le langage XML, ne sont disponibles que pour les objets XmlReader créés à l'aide de la méthode Create.

Le tableau suivant répertorie les paramètres de propriété par défaut de la classe XmlReaderSettings.

Propriété

Valeur par défaut

CheckCharacters

true

ConformanceLevel

ConformanceLevel.Document

IgnoreComments

false

IgnoreProcessingInstructions

false

IgnoreWhitespace

false

LineNumberOffset

0.

LinePositionOffset

0

NameTable

null

DtdProcessing

Prohibit

ProhibitDtd

true. Cette propriété est obsolète. Utilisez plutôt DtdProcessing.

Schemas

Objet XmlSchemaSet vide

ValidationFlags

ProcessIdentityConstraints activé

ValidationType

ValidationType.None

XmlResolver

Nouvel objet XmlUrlResolver

Scénarios XmlReader

Le tableau suivant décrit certains scénarios courants et les paramètres de la classe XmlReaderSettings à appliquer.

Scénario

XmlReaderSettings

Exige que les données soient un document XML correctement construit.

ConformanceLevel = ConformanceLevel.Document

Exige que les données soient une entité XML correctement construite.

ConformanceLevel = ConformanceLevel.Fragment

Nécessite la validation des données par rapport à une DTD.

DtdProcessing = DtdProcessing.Parse

ValidationType = ValidationType.DTD

Nécessite la validation des données par rapport à un schéma XML.

ValidationType = ValidationType.Schema

Schemas = XmlSchemaSet à utiliser pour la validation

Nécessite la validation des données par rapport à un schéma XML inline.

ValidationType = ValidationType.Schema

ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema

Nécessite la prise en charge du type

ValidationType = ValidationType.Schema

Schemas = XmlSchemaSet à utiliser

Quelques scénarios particuliers peuvent nécessiter l'utilisation d'une implémentation XmlReader qui n'est pas créée par la méthode Create.

  • Si vous devez effectuer une validation par rapport à un schéma XDR, utilisez la classe XmlValidatingReader.
RemarqueRemarque

La classe XmlValidatingReader est obsolète dans .NET Framework version 2.0.Il est recommandé d'envisager la migration vers des schémas XML et d'effectuer la validation à l'aide d'un objet XmlReader retourné par la méthode Create.

  • Pour lire des données XML à partir d'un objet XmlNode, utilisez la classe XmlNodeReader.

  • Si vous devez développer des entités sur demande (les lecteurs créés par la méthode Create développent toutes les entités) ou si vous ne voulez pas que le contenu de votre texte soit normalisé, utilisez la classe XmlTextReader.

  • Si vous ne souhaitez pas que les attributs par défaut soient retournés, utilisez la classe XmlTextReader.

Pour instancier un objet XmlReader

Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);

Pour envelopper une instance de lecteur dans un autre lecteur

Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)
XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);

Pour enchaîner des lecteurs afin d'ajouter d'autres paramètres

Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings)  ' XML Schema Validation
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings);  // XML Schema Validation

Voir aussi

Concepts

Lecture de XML avec XmlReader