Cette documentation est archivée et n’est pas conservée.

XmlReader, classe

Représente un lecteur fournissant un accès rapide, non mis en cache et en avant uniquement vers les données XML.

Espace de noms : System.Xml
Assembly : System.Xml (dans system.xml.dll)

public abstract class XmlReader : IDisposable
public abstract class XmlReader implements IDisposable
public abstract class XmlReader implements IDisposable

XmlReader fournit un accès en avant uniquement et en lecture seule à un flux de données XML. La classe XmlReader respecte les recommandations du W3C intitulées Extensible Markup Language (XML) 1.0 et Namespaces in XML.

Le nœud actuel fait référence au nœud sur lequel le lecteur est placé. Le lecteur avance à l'aide des méthodes de lecture tandis que les propriétés reflètent la valeur du nœud actuel.

RemarqueImportant :

Bien que Microsoft .NET Framework inclue des implémentations concrètes de la classe XmlReader, telles que les classes XmlTextReader, XmlNodeReader et XmlValidatingReader, dans la version 2.0, la méthode recommandée consiste à créer des instances XmlReader à l'aide de la méthode Create. Pour plus d'informations, consultez Création de lecteurs XML.

XmlReader lève une XmlException sur les erreurs d'analyse XML. Lorsqu'une exception est levée, l'état du lecteur est imprévisible. Par exemple, le type de nœud rapporté peut différer du type réel du nœud actuel. Utilisez la propriété ReadState pour vérifier si l'état du lecteur est Erreur.

Pour obtenir des informations supplémentaires sur la classe XmlReader, consultez Lecture de XML avec XmlReader.

Considérations sur la sécurité

Les éléments suivants sont à prendre en compte lors de l'utilisation de la classe XmlReader.

  • Les exceptions levées par XmlReader peuvent divulguer des informations relatives au chemin d'accès dont vous ne souhaitez pas qu'elles soient propagées dans l'application. Vos applications doivent intercepter les exceptions et les traiter correctement.

  • N'activez pas le traitement DTD si vous rencontrez des problèmes de déni de service ou si vous traitez avec des sources non fiables. Le traitement DTD est désactivé par défaut pour les objets XmlReader créés par la méthode Create.

    Si le traitement DTD est activé, vous pouvez utiliser XmlSecureResolver pour restreindre les ressources auxquelles XmlReader peut accéder. Vous pouvez également concevoir votre application afin que le traitement XML soit limité en termes de mémoire et de temps. Par exemple, configurez des limites de délai d'attente dans votre application ASP.NET

  • Les données XML peuvent inclure des références à des ressources externes telles qu'un fichier de schéma. Les ressources externes sont résolues par défaut en utilisant un objet XmlUrlResolver sans informations d'identification d'utilisateur. Vous pouvez renforcer la sécurité en procédant comme suit :

    • Limitez les ressources auxquelles XmlReader peut accéder en définissant la propriété XmlReaderSettings.XmlResolver sur un objet XmlSecureResolver.

    • N'autorisez pas XmlReader à ouvrir n'importe quelle ressource externe en définissant la propriété XmlReaderSettings.XmlResolver sur référence Null (Nothing en Visual Basic).

  • Les données XML peuvent contenir un grand nombre d'attributs, de déclarations d'espace de noms, d'éléments imbriqués et autres, qui requièrent une grande durée de traitement. Pour limiter la taille de l'entrée qui est envoyée au XmlReader, créez une implémentation IStream personnalisée et affectez-lui XmlReader.

  • La méthode ReadValueChunk peut être utilisée pour gérer de grands flux de données. Cette méthode lit un petit nombre de caractères à la fois au lieu d'allouer une chaîne unique pour la valeur entière.

  • Lors de la lecture d'un document XML avec un grand nombre des noms locaux uniques, d'espaces de noms ou de préfixes, un problème peut survenir. Si vous utilisez la classe qui dérive de XmlReader et que vous appelez la propriété LocalName, Prefixou NamespaceUri pour chaque élément, la chaîne retournée est ajoutée à un NameTable. La collection détenue par NameTable ne diminue jamais en taille et crée une « fuite de mémoire » virtuelle des handles de chaîne. Il est possible de limiter les risques en dérivant de la classe NameTable et en appliquant un quota de taille maximal. (Il est impossible d'empêcher l'utilisation d'un NameTable ou de faire basculer le NameTable lorsqu'il est complet.) Pour limiter les risques, évitez également d'utiliser les propriétés mentionnées et utilisez plutôt la méthode MoveToAttribute avec la méthode IsStartElement dans la mesure du possible ; ces méthodes ne retournant pas de chaînes, la collection NameTable n'est pas saturée.

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0
Afficher: