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

  FORUM HardWare.fr
  Programmation
  XML/XSL

  XML Parser

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

XML Parser

n°1784928
tubi
Posté le 10-09-2008 à 11:50:07  profilanswer
 

bonjour tmd,
Est ce qu'il y'a une bibliothèque en C++ qui utilise SAX pour parser un fichier XML,et n'utilise pas la méthode DOM pour le modifier en fait n'utilise pas une méthode lourd au niveau mémoire pour le modifier?

mood
Publicité
Posté le 10-09-2008 à 11:50:07  profilanswer
 

n°1784967
gilou
Modérateur
Modzilla
Posté le 10-09-2008 à 13:35:42  profilanswer
 

Expat. C'est en C, mais il y a un wrapper C++.
Orienté stream, donc léger.
Mais quand tu parles de modifs du XML, a quelle type de modifs penses tu?
A+,


Message édité par gilou le 10-09-2008 à 13:36:34

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1785002
tubi
Posté le 10-09-2008 à 14:11:37  profilanswer
 

Mercis gilou :wahoo:  
Par exemple je veux modifier  la valeur/le nom d’un élément ou d’une attribut.  
 

n°1785209
gilou
Modérateur
Modzilla
Posté le 10-09-2008 à 19:29:48  profilanswer
 

Facile avec expat, ca.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1785465
tubi
Posté le 11-09-2008 à 11:14:53  profilanswer
 

C’est juste,expat permis de modifier un fichier xml :) .
Est ce que vous pouvez me dire la méthode utilisé pour ça ?
Est-ce que expat chrage la totalité de fichier puis il le modifie et après il écrase le fichier précèdent ou bien il fais une écriture séquentiel ou bien comment ? surtout que j'ai une contrainte de mémoire :sweat: .

n°1785467
gilou
Modérateur
Modzilla
Posté le 11-09-2008 à 11:36:21  profilanswer
 

Expat ne charge rien du tout et ne modifie rien du tout:
Il lit un fichier (donc ca prends en mémoire la taille d'un buffer), et parse le fichier.
Pour chaque token reconnu, il appelle une fonction de callback.
Et c'est tout.
C'est a toi d'ecrire le driver, c'est a dire le contenu des fonctions de callback.
Pour démarrer, écris un driver qui va pondre en sortie (avec des printf par exemple) ce qui est lu dans le fichier en entrée, puis modifie en fonction de tes besoins.
C'est assez simple a faire, et il doit y avoir des exemples dans la doc.
En général, sous windows, tu compiles expat comme une dll que ton code principal, avec le driver, appelle.
Ca bouffe peu de mémoire, c'est un des parseurs les plus légers (en empreinte mémoire) qu'on puisse employer.
A+,


Message édité par gilou le 11-09-2008 à 11:38:54

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1785480
gilou
Modérateur
Modzilla
Posté le 11-09-2008 à 11:49:10  profilanswer
 

Notes que expat ne gère que le XML encodé dans les encodages suivants:
utf-8        (Unicode en UTF-8)
utf-16       (Unicode en UTF-16)
iso-8859-1 (Isolatin 1)
us-ascii     (ASCII)
Ca couvre l'essentiel des cas de figure, mais si tu as besoin de parser des documents dans un encodage peu courant (Isolatin 3,4... ou encodages japonais chinois coréens...), il faudra soit coder des tables spécifiques a la main (c'est faisable avec expat, je l'ai fait, mais je ne le recommande pas), soit transcoder ton fichier en unicode avant de le fournir a expat [l'emploi de la librairie ICU de IBM est alors recommandé, la aussi sous forme de dll, mais ca bouffe une place mémoire certaine].
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1785483
tubi
Posté le 11-09-2008 à 11:53:55  profilanswer
 

Oui,c’est a moi d’écrire le driver, mercis gilou :) .
J’ai trouver aussi la bip xerces qui implémente plusieurs  méthode (DOM, SAX, SAX2) est ce que vous connaissez  comment elle fait pour modifier un fichier parsé avec SAX ?  

n°1785500
gilou
Modérateur
Modzilla
Posté le 11-09-2008 à 12:20:33  profilanswer
 

Xerces, ce n'est pas léger en mémoire, hein.
A priori, le parseur interne fonctionne sur un modele DOM (chargement du tout en mémoire, construction d'un arbre DOM, etc)
Il me semble que l'interface SAX consiste a parcourir l'arbre DOM et a générer des évènements SAX au fur et a mesure.
 
Si tu veux verifier la conformité du XML par rapport a une DTD, par contre, Xerces est supérieur a expat (qui est capable de décoder les erreurs de conformité par rapport a une DTD, mais n'est pas capable de détecter si la DTD elle même est correcte [il ne sait pas détecter si les modèles de contenu sont ambigus ou non]).
Mais si tu n'as pas de DTD (ou bien si tu as une DTD dont tu as par ailleurs vérifié la validité) et ne fais que parser du XML bien-formé, expat est assez adapté.
Si tu as non pas une DTD mais un XML-schema, un outil comme Xerces est alors plus adapté.  
A+,


Message édité par gilou le 11-09-2008 à 12:32:19

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1785513
tubi
Posté le 11-09-2008 à 12:30:24  profilanswer
 

Donc xerces utilise SAX juste pour la lecture, et pour la modification il charge tout le fichier en mémoire sous une structure arbre, c’est vraiment terrible au niveau mémoire :pfff: .
J’ai trouvé une autre qui s’appelle Irrxml intégrer dans la SDK d’Irrlicht (moteur de jeu) mais c’est toujours a toi d’implémenter un algorithme de modification.  
Mercis beaucoup gilou :p .  

mood
Publicité
Posté le 11-09-2008 à 12:30:24  profilanswer
 

n°1785518
gilou
Modérateur
Modzilla
Posté le 11-09-2008 à 12:36:44  profilanswer
 

tubi a écrit :

Donc xerces utilise SAX juste pour la lecture, et pour la modification il charge tout le fichier en mémoire sous une structure arbre, c’est vraiment terrible au niveau mémoire :pfff: .
J’ai trouvé une autre qui s’appelle Irrxml intégrer dans la SDK d’Irrlicht (moteur de jeu) mais c’est toujours a toi d’implémenter un algorithme de modification.  
Mercis beaucoup gilou :p .  

Non, Xerces n'utilise pas SAX pour la lecture. Il a un parser plus complexe que SAX et différent. Il charge systématiquement un arbre interne en mémoire, sauf erreur de ma part (Bon, ca fait plus de deux ans que j'ai pas été voir le code, mais les principes de bases n'ont pas du trop bouger).
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1785520
gilou
Modérateur
Modzilla
Posté le 11-09-2008 à 12:40:21  profilanswer
 

tubi a écrit :

Donc xerces utilise SAX juste pour la lecture, et pour la modification il charge tout le fichier en mémoire sous une structure arbre, c’est vraiment terrible au niveau mémoire :pfff: .Mercis beaucoup gilou :p .  

Des que tu veux faire des choses compliquées en XML, tu as besoin de passer par une structure arborescente en mémoire, donc c'est pas illogique.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1785548
tubi
Posté le 11-09-2008 à 13:37:43  profilanswer
 

Citation :

Non, Xerces n'utilise pas SAX pour la lecture. Il a un parser plus complexe que SAX et différent.


 
Mais j’ai déjà téléchargé xerces et j’ai trouvé qu’elle implémente SAX et SAX2


Message édité par tubi le 11-09-2008 à 13:38:07
n°1785572
gilou
Modérateur
Modzilla
Posté le 11-09-2008 à 14:08:54  profilanswer
 

Oui, il implemente une interface SAX, mais comme je t'ai dit, je ne suis pas sur qu'il ne construise pas néanmoins un arbre interne, même en mode SAX.
Il faudra que tu regardes l'empreinte mémoire (déja assez importante avec xerces).
Expat a une toute petite taille mémoire et est beaucoup plus facile a utiliser que Xerces, mais bon, tu fais comme tu veux, hein...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1785591
tubi
Posté le 11-09-2008 à 14:40:33  profilanswer
 

Bon, :bounce:  j’ai réussi à utiliser Irrxml pour modifier un fichier xml.
C’est vraiment gentil de votre part gilou :jap: .


Message édité par tubi le 11-09-2008 à 14:41:14
n°1805292
bb tigre
on forge son propre destin
Posté le 28-10-2008 à 10:33:21  profilanswer
 

bjr,j aimerais savoir si SML et XML st pareils,et si ce st des languages ou logiciel,
j ais une conaissance a moi ki programme ds ALice et utilise le language SML
j aimerais avoir des cours pr debutan via net a propo de cela
merci d avance


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  XML Parser

 

Sujets relatifs
Parser un fichier XMLParser XML attribut, php5
Probleme de parser XML / XSLt - Doublons[Java & XML] Parser SAX : comment ajouter un tag au cours du parsing ?
Parser du XML en PHPParser un fichier XML en PHP
[RSS] fichier XML ok mais faut-il obligatoirement le parser avec PHP?Parser un fichier Atom XML ?
[JavaScript/XML] Parser un fichier XML en variable arbre[java] Parser un fichier XML
Plus de sujets relatifs à : XML Parser


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