Qu'est-il arrivé à XmlTextReader en .Net 2.0 ? [Résolu]

Signaler
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008
-
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008
-
Bonjour;
Dans la documentation de .Net, il est écrit qu'il est conseillé de créer des XmlReader avec la méthode statique Create au lieu d'utiliser un XmlTextReader :Although the Microsoft .NET Framework includes concrete implementations of the XmlReader class, such as the <?XML:NAMESPACE PREFIX MSHelp NS "http://msdn.microsoft.com/mshelp" /??><mshelp:link tabindex="0" keywords="T:System.Xml.XmlTextReader">XmlTextReader</mshelp:link>, <mshelp:link tabindex="0" keywords="T:System.Xml.XmlNodeReader">XmlNodeReader</mshelp:link>, and the <mshelp:link tabindex="0" keywords="T:System.Xml.XmlValidatingReader">XmlValidatingReader</mshelp:link> classes, in the .NET Framework version 2.0, we recommend that you create XmlReader instances using the Create method.

Et dans une autre page :
In the Microsoft .NET Framework version 2.0 release, the recommended practice is to create [ms-help://MS.NETFramework.v20.en/cpref19/html/T_System_Xml_XmlReader.htm XmlReader] instances using the [ms-help://MS.NETFramework.v20.en/cpref19/html/O_T_System_Xml_XmlReader_Create.htm System.Xml.XmlReader.Create] method. This allows you to take full advantage of the new features introduced in this releaseCreating XML Readers</mshelp:link>.

De quels nouveaux "features" ils parlent. Il me semble que le XmlTextReader simplifie davantage la lecture des fichiers xml.
Je ne comprends pas pkoi utiliser un XmlReader au lieu d'un XmlTextReader quand on travaille sur des fichiers textes?
Je débute un programme et j'attend votre avis pour décider le quel choisir, XmlReader ou XmlTextReader parce que la documentation n'est pas trop claire la-dessus.

Merci d'avance
[:D] @++
A voir également:

4 réponses

Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
30 décembre 2007
3
Salut,

La méthode XmlParser.Create ressemble à un design pattern de type Factory. En gros, au lieu de laisser le développeur instancier lui-même la classe dérivée (XmlTextReader, XmlValidatingReader, ...), cette méthode choisit la classe dérivée la plus appropriée en fonction des paramètres passés,  crée une instance et la retourne.

L'idée à la base est donc de simplifier les choix du programmeur, et d'encourager l'abstraction autour des différents types de parsers XML (on ne manipule que des XmlReader).
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
Badr> En fait tu peux donner un coup de Reflector sur XmlReader.Create pour voir ce qu'elle fait, tu verras, le code n'est pas trop compliqué...

<hr size="2" />-Blog-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
Salut,
Après lecture de la doc je dois dire que je ne saurais pas répondre à ta question.
Le fait est que XmlReader est une class abstraite et que XmlTextReader dérive de cette classe, elle est donc logiquement "plus spécialisée".

Maintenant si la doc insiste sur le fait de se servir d'un XmlReader plutôt qu'un XmlTextReader c'est que y'a sûrement une raison (peut-être au niveau de la validation des schémas?) et je ne vois pas pourquoi tu ne le ferais pas

<hr size="2" />-Blog-
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008

Salut et merci pour vos réponses,
Après un coup de Reflector (j'ai pas le reflexe encore), j'ai pu confirmer les dires de dgouttegattat.
Il semble que XmlReader.Create selectionne la meilleure option en fonction du type de document Xml.
Pour le confirmer, j'ai essayer le code suivant :
XmlReader reader XmlReader.Create(path);<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>

Console.WriteLine(reader.ToString());

Output : System.Xml.XmlTextReaderImpl

C'est domage par contre de voir que même dans la documentation, il donne des sources avec XmlTextReader. C'est mélangeant pour le lecteur.
Allez, je vais pouvoir commencer ce projet....avec un XmlReader :)
[:D] @++