Comparaison entre XmlReader et le lecteur SAX
Comme le lecteur SAX (Simple API for XML), l'objet XmlReader est un curseur avant uniquement en lecture seule. Il fournit un accès en flux rapide et non mis en cache à l'entrée. Il peut lire un flux ou un document. Il permet à l'utilisateur d'extraire des données et d'ignorer des enregistrements sans intérêt pour l'application. La grande différence réside dans le fait que le modèle SAX est un modèle « push » dans lequel l'analyseur exécute un push sur des événements vers l'application, en avertissant l'application chaque fois qu'un nouveau nœud a été lu, alors que les applications qui utilisent l'objet XmlReader peuvent extraire des nœuds du lecteur à volonté. Voici les domaines dans lesquels ce modèle d'extraction présente des avantages :
Avantage |
Description |
---|---|
Gestion des états |
Le modèle push requiert les gestionnaires de contenu pour construire des machines ayant un état très complexe. Le client du modèle d'extraction simplifie la gestion d'état à l'aide d'une amélioration de procédure naturelle de haut en bas. |
Flux d'entrée multiples |
Le modèle d'extraction permet au client de rassembler plusieurs flux d'entrée. Il est très difficile de le faire dans le modèle push. |
Superposition |
Le modèle push peut être créé au-dessus du modèle d'extraction. L'inverse est impossible. |
Capacité à éviter la copie de chaînes supplémentaires |
Normalement, les données sont lues de la mémoire tampon de l'analyseur dans l'objet chaîne qui fait ensuite l'objet d'un push vers la mémoire tampon du client. Le modèle d'extraction permet au client de donner à l'analyseur une mémoire tampon dans laquelle la chaîne est écrite directement. |
Traitement sélectif |
Le modèle push avertit le client de chaque élément, y compris des attributs, des instructions de traitement et des espaces blancs, alors que le client du modèle d'extraction peut ignorer des éléments et ne traiter que ceux qui présentent un intérêt pour l'application. Cela permet d'obtenir des applications très efficaces. De plus, les propriétés qui affectent le mode de traitement du flux XML peuvent être définies à l'avance (par exemple, normalization). |