Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1929 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Wanted : Parser XML avec bonnes propriétés

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Wanted : Parser XML avec bonnes propriétés

n°2024086
liouan
Posté le 21-09-2010 à 11:21:05  profilanswer
 

Salut tout le monde,
 
J'ai un gros fichier XML à traiter (il ne rentrera pas au complet en mémoire). Je vais donc utiliser un parser de type SAX.
Je cherche un parser xml de type SAX ayant les propriétés suivantes:
 
-possibilité de s'arréter en plein milieu du parsing et reprendre plus tard
-possibilité de se placer à un endroit précis du fichier (fseek?) et continuer le parsing à partir de là (le but étant de pouvoir placer des pointeurs dans le fichier XML et naviguer efficacement à l'intérieur)
 
J'ai vu que Expat permettait de s'arréter en plein milieu du parsing et de reprendre plus tard mais je n'ai pas vu la possibilité de se placer à un endroit particulier du fichier pour pouvoir continuer le parsing à partir de là.
 
Connaissez-vous quelques parser XML qui ont ces propriétés ?

mood
Publicité
Posté le 21-09-2010 à 11:21:05  profilanswer
 

n°2024120
gilou
Modérateur
Modzilla
Posté le 21-09-2010 à 13:02:22  profilanswer
 

Je connais plutôt bien expat. Ce que vous voulez faire n'est pas clair:

Citation :

possibilité de se placer à un endroit précis du fichier (fseek?) et continuer le parsing à partir de là

De commencer le parsing?
Ou bien c'est de commencer le parsing, puis sauter un bout du fichier en cours?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2024134
liouan
Posté le 21-09-2010 à 14:13:58  profilanswer
 

Pour faire clair, mon fichier XML a 2 parties:
-Une partie "utile" contenant des informations.
-Une partie "indexing".
 
Dans la partie "indexing", je veux pouvoir mettre des informations d'indexing + un pointeur vers un élément correspondant dans la partie "utile".
 
Donc l'idée, c'est que lorsque l'on recherche une info dans le fichier, on saute direct à la partie "indexing".  
-On cherche l'élément... (parcours SAX classique)  
-On trouve l'élément, avec un attribut qui contient l'emplacement de l'élément correspondant dans la partie "utile".
-Enfin, on saute directement à l'endroit correspondant dans la partie utile, puis on commence à lire à partir de là pour lire l'élément correspondant (donc un autre parcours SAX classique).
 
Ce que je recherche donc, c'est une API qui ressemblerait à
-une callback startElement
-une callback endElement
-la possibilité de stopper/reprendre le traitement
-la possibilité de changer la position courante dans le fichier XML
 
Est-ce plus clair?
 
Note: Je ne peux pas faire ce travail autrement que dans un fichier XML (pas de DB par exemple). Je suis obligé d'analyser un XML existant, pour lequel je détermine moi-même la structure.
 
L'intérêt de la partie d'indexing est qu'elle prendra <5% de la taille totale du fichier, ce qui améliorera beaucoup les performances

n°2024151
gilou
Modérateur
Modzilla
Posté le 21-09-2010 à 15:25:54  profilanswer
 

Pour faire cela, je pense qu'il ne faut pas laisser expat gérer l'input a partir du fichier, mais il faut que tu le gères toi même via XML_ParseBuffer.
J'ai déja fait ce genre de choses (parser un buffer pour que expat reconnaisse des entités prédéfinies et implicites ne figurant pas dans le fichier parsé, parser un buffer contenant une déclaration xml (pour l'encoding) pour un fichier externe sans déclaration, et dont l'encoding était différent de celui du fichier courant, ...)
C'est un peu loin dans mon souvenir, mais c'était une méthode qui marche.
Note: le code de l'encapsulation perl d'expat (ie qui fait des appels a la librairie expat), ecrit en xs (proche du C) contient aussi des exemple de code transposable intéressants en fin de fichier, comme XML_ParseDone. Voir ici: http://cpansearch.perl.org/src/CHO [...] t/Expat.xs
A+,


Message édité par gilou le 21-09-2010 à 15:44:18

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2024164
liouan
Posté le 21-09-2010 à 16:27:47  profilanswer
 

Je n'avais pas vu qu'il y avait cette possibilité dans Expat et effectivement, ça me semble pas mal du tout.
 
Je vais y jeter un oeil, merci ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Wanted : Parser XML avec bonnes propriétés

 

Sujets relatifs
Quel parser d'expressions mathématiques en java ?[JXL] Conservation des propriétés
connaitre les propriétés d'un objetProblème de code dans fichier XML
quel parser html pour delphi ?XML et flock
[XML/XSL]Problème avec aply template ou autre chose[PHP] Parser XML et &
Mappage XML 
Plus de sujets relatifs à : Wanted : Parser XML avec bonnes propriétés


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR