Accélérer un parsing xml

Posté par bofkill le 27/11/2007 12:48:11
Tout d'abord, bonjour à tous.

Je crée ce thread car j'ai un petit souci de rapidité dans un parsing XML.


Ce fichier est une réponse d'un webservice que nous avons créé, et qui est souvent utilisé dans notre application (elle est tout en 3 tiers. Sa longueur est variable, il peut aussi bien faire 30 lignes que 3000 lignes.

Le souci, c'est que la plupart du temps, il est plutot volumineux, et le parsing du fichier complet est plutôt lent (environ 2 secondes).

La structure de base est la suivante :

<dossiers>
  <dossier>
    <!-- Tout plein de balises imbriquées qui contiennent les infos du dossier -->
    [...]
  </dossier>
  <dossier>
    [...]
  </dossier>
</dossiers>


Un objet est créé par dossier.
Le fichier est découpé en bouts, un par dossier, et chaque partie est parsée individuellement dans une méthode de la classe dossier.

L'utilisation de la sérialisation est à oublier, car le service va être ouvert à l'extérieur, et les formats de sérialisation de Windev ne sont pas très lisibles.

Donc notre parsing se constitue essentiellement de recherches XML.

Sauf que, comme je l'ai déjà évoqué, c'est assez lent, et nous cherchons une solution qui nous permettrait d'accélérer ce parsing sans trop rendre le code illisible, car il sera certainement soumis à de futures modifications.

Nous avons envisagé 2 solutions :
- Utilisation de requetes XPath, mais je pense que le vitesse d'exécution ne sera pas significativement différente, car au final, le principe reste le même..

- Lecture "linéaire" du XML (Xmlsuivant/XmlFils), mais la structure du XML étant assez complexe (à l'intérieur des dossiers), j'ai peur que le code en devienne carrément illisible.


Que pensez-vous de tout ceci ?
Quelle méthode me conseillez-vous ?
Pensez-vous à d'autres méthodes qui nous permettraient de résoudre notre problème ?

Merci à vous :)

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=18&topic_id=5546&post_id=22767