Partager via


Méthodes System.Xml.XmlReader.Create

Cet article fournit des remarques supplémentaires à la documentation de référence de cette API.

La plupart des Create surcharges incluent un settings paramètre qui accepte un XmlReaderSettings objet. Vous pouvez utiliser cet objet pour :

  • Spécifiez les fonctionnalités que vous souhaitez prendre en charge sur l’objet XmlReader .
  • Réutilisez l’objet XmlReaderSettings pour créer plusieurs lecteurs. Vous pouvez utiliser les mêmes paramètres pour créer plusieurs lecteurs avec la même fonctionnalité. Vous pouvez également modifier les paramètres d’une XmlReaderSettings instance et créer un lecteur avec un ensemble différent de fonctionnalités.
  • Ajoutez des fonctionnalités à un lecteur XML existant. La Create méthode peut accepter un autre XmlReader objet. L’objet sous-jacent XmlReader peut être un lecteur défini par l’utilisateur, un XmlTextReader objet ou une autre XmlReader instance à laquelle vous souhaitez ajouter des fonctionnalités supplémentaires.
  • Tirez pleinement parti des fonctionnalités telles que la vérification de la conformité et la conformité à la recommandation XML 1.0 (quatrième édition) qui ne sont disponibles que sur XmlReader les objets créés par la méthode statique Create .

Remarque

Bien que .NET inclut des implémentations concrètes de la classe XmlReader, telles que les classes XmlTextReader, XmlNodeReader, et XmlValidatingReader, nous vous recommandons de créer une instance XmlReader à l’aide de la méthode Create.

Paramètres par défaut

Si vous utilisez une surcharge Create qui n’accepte pas un objet XmlReaderSettings, les paramètres de lecture par défaut suivants sont utilisés :

Réglage Par défaut
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas Objet vide XmlSchemaSet
ValidationFlags ProcessIdentityConstraints Activé
ValidationType None
XmlResolver null

Paramètres pour les scénarios courants

Voici les XmlReaderSettings propriétés que vous devez définir pour certains des scénarios de lecteur XML classiques.

Besoin Définissez
Les données doivent être un document XML bien formé. ConformanceLevel à Document.
Les données doivent être une entité analysée XML bien formée. ConformanceLevel à Fragment.
Les données doivent être validées par rapport à un DTD. DtdProcessing à Parse
ValidationType à DTD.
Les données doivent être validées par rapport à un schéma XML. ValidationType à Schema
Schemas à XmlSchemaSet à utiliser pour la validation. Notez que XmlReader ne prend pas en charge la validation de schéma XML-Data Reduced (XDR).
Les données doivent être validées par rapport à un schéma XML inline. ValidationType à Schema
ValidationFlags à ProcessInlineSchema.
Prise en charge des types. ValidationType à Schema
Schemas à l’objet XmlSchemaSet à utiliser.

XmlReader ne prend pas en charge la validation du schéma XML-Data Reduced (XDR).

Programmation asynchrone

En mode synchrone, la Create méthode lit le premier segment de données à partir de la mémoire tampon du fichier, du flux ou du lecteur de texte. Cela peut générer une exception si une opération d’E/S échoue. En mode asynchrone, la première opération d’E/S se produit avec une opération de lecture, de sorte que les exceptions qui se produisent seront levées lorsque l’opération de lecture se produit.

Considérations relatives à la sécurité

Par défaut, l’objet XmlReader utilise un XmlUrlResolver objet sans informations d’identification utilisateur pour ouvrir des ressources. Cela signifie que, par défaut, le lecteur XML peut accéder à n’importe quel emplacement qui ne nécessite pas d’informations d’identification. Utilisez la propriété XmlResolver pour contrôler l’accès aux ressources :

  • Définissez XmlResolver sur un XmlSecureResolver objet pour restreindre les ressources auxquelles le lecteur XML peut accéder, ou...
  • Définissez XmlResolver sur null pour empêcher le lecteur XML d’ouvrir des ressources externes.

Exemples

Cet exemple crée un lecteur XML qui supprime des espaces blancs non significatifs, supprime les commentaires et vérifie la conformité au niveau des fragments.

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

L’exemple suivant utilise des informations d’identification XmlUrlResolver par défaut pour accéder à un fichier.

// Set the reader settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
' Set the reader settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.IgnoreComments = true
settings.IgnoreProcessingInstructions = true
settings.IgnoreWhitespace = true
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", settings)

Le code suivant encapsule une instance de lecteur au sein d’un autre lecteur.

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);
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)

Cet exemple montre comment chaîner les lecteurs pour ajouter la validation de schéma DTD et XML.

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
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