Accélérer un parsing xml
Utilisateur WDF
Inscrit:
28/06/2005 15:02
De Aurillac Cantal Auvergne
Post(s): 91
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 :)

Contribution le : 27/11/2007 12:48
_________________
La touche F1 est et restera toujours ta meilleure amie :p
Créer un fichier PDF de la contribution Imprimer


Re: Accélérer un parsing xml
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour.
Une fois n'est pas coutume, je ne propose pas de solution.
Ce post me permet de tracer la discussion, désolé pour la gène éventuelle.

Contribution le : 28/11/2007 15:15
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Accélérer un parsing xml
Utilisateur WDF
Inscrit:
28/06/2005 15:02
De Aurillac Cantal Auvergne
Post(s): 91
Pas de problème R&B.

Nous avons fait quelques tests.
Nous avons parsé le même fichier avec les 3 méthodes, et voilà les résultats :

Avec la méthode du XMLRecherche, il a fallu environ 59 secondes a parser le fichier.

En suivant la même structure mais en utilisant des requetes XPath pour se placer, on a arrêté le test tellement c'était long (ce qui m'a beaucoup étonné d'ailleurs..)

Finalement, nous avons testé un lecture linéaire du fichier, sans recherche, avec uniquement des boucles et en testant le nom des balises XML et le résultat est vraiment impressionnant : le parsing du fichier s'est fait en moins de 6 secondes.

Le code est beaucoup moins clair et plus difficile à maintenir, mais quand on voit le gain apporté par cette solution, je pense que ça vaut le coup :)

Contribution le : 29/11/2007 11:04
_________________
La touche F1 est et restera toujours ta meilleure amie :p
Créer un fichier PDF de la contribution Imprimer


Re: Accélérer un parsing xml
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Citation :
Le code est beaucoup moins clair et plus difficile à maintenir, mais quand on voit le gain apporté par cette solution, je pense que ça vaut le coup :)


XML est un standard. WinDev offre des possibilités de lecture des fichiers textes et de créer des classes. Il gère aussi la redondance. Je pense que ces éléments devrait rendre possible la mise en place d'un parseur qui enverais les données dans une structure plus proche des habitudes des utilisateurs de WinDev.

Contribution le : 03/12/2007 15:38
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2