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.
Important |
---|
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 |
---|---|
true |
|
ConformanceLevel.Document |
|
false |
|
false |
|
false |
|
0. |
|
0 |
|
null |
|
true. Cette propriété est obsolète. Utilisez plutôt DtdProcessing. |
|
Objet XmlSchemaSet vide |
|
ProcessIdentityConstraints activé |
|
ValidationType.None |
|
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.
Remarque |
---|
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