Qu'est-il arrivé à XmlTextReader en .Net 2.0 ?

Résolu
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 - 21 déc. 2006 à 00:06
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 - 21 déc. 2006 à 19:53
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] @++

4 réponses

dgouttegattat Messages postés 129 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 décembre 2007 3
21 déc. 2006 à 11:21
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).
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
21 déc. 2006 à 11:53
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-
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
21 déc. 2006 à 08:50
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-
0
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
21 déc. 2006 à 19:53
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] @++
0
Rejoignez-nous