Méthodes System.Xml.XmlReader.Create
Cet article vous offre des remarques complémentaires à la documentation de référence pour 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 méthode Create peut accepter un autre objet XmlReader. 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 meilleure conformité case activée et la conformité à la recommandation XML 1.0 (quatrième édition) qui sont disponibles uniquement sur XmlReader les objets créés par la méthode statiqueCreate.
Remarque
Bien que .NET inclut des implémentations concrètes de la XmlReader classe, telles que les XmlTextReaderclasses , XmlNodeReaderet les XmlValidatingReader classes, nous vous recommandons de créer XmlReader des instances à l’aide de la Create méthode.
Paramètres par défaut
Si vous utilisez une Create surcharge qui n’accepte pas d’objet XmlReaderSettings , les paramètres de lecteur par défaut suivants sont utilisés :
Setting | Par défaut |
---|---|
CheckCharacters | true |
ConformanceLevel | ConformanceLevel.Document |
IgnoreComments | false |
IgnoreProcessingInstructions | false |
IgnoreWhitespace | false |
LineNumberOffset | 0 |
LinePositionOffset | 0 |
NameTable | null |
DtdProcessing | Prohibit |
Schemas | Objet XmlSchemaSet vide |
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.
Condition requise | Définir |
---|---|
Les données doivent être un document XML bien formé. | ConformanceLevel en Document. |
Les données doivent être une entité analysée XML bien formée. | ConformanceLevel en Fragment. |
Les données doivent être validées par rapport à un DTD. | Il lance DtdProcessing sur Parse. ValidationType en DTD. |
Les données doivent être validées par rapport à un schéma XML. | Il lance ValidationType sur Schema. SchemasXmlSchemaSet à utiliser pour la validation. Notez que XmlReader ne prend pas en charge la validation de schéma XDR (XML-Data Reduced). |
Les données doivent être validées par rapport à un schéma XML inline. | Il lance ValidationType sur Schema. ValidationFlags en ProcessInlineSchema. |
Prise en charge des types. | Il lance ValidationType sur Schema. SchemasXmlSchemaSet à utiliser. |
XmlReader ne prend pas en charge la validation de schéma XDR (XML-Data Reduced).
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 lever 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 de 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é pour contrôler l’accès XmlResolver aux ressources :
- Définissez XmlResolver sur un XmlSecureResolver objet pour restreindre les ressources auxquelles le lecteur XML peut accéder, ou...
- Définissez cette option XmlResolver pour
null
empêcher le lecteur XML d’ouvrir des ressources externes.
Exemples
Cet exemple crée un lecteur XML qui extrait des espaces blancs non significatifs, des commentaires de bandes et effectue une conformité au niveau des fragments case activée ing.
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