IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

[XML/Perl] Conseils pour gérer un fichier XML de config


Sujet :

Modules Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut [XML/Perl] Conseils pour gérer un fichier XML de config
    Bonjour !

    Je me permet de poster car même après avoir cherché, je n'arrive pas à trouver la solution optimale à mon problème.

    Je voudrais faire un script Perl qui permette de gérer un fichier XML de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <root>
      <spec name="xxx">
        <ses name="s1" date="11/05/2005" state="1"/>
        <ses name="s2" date="13/05/2005" state="4"/>
      </spec>
      <spec name="yyy">
        <ses name="s1" date="01/06/2005" state="2"/>
        <ses name="s4" date="12/03/2005" state="4"/>
      </spec> 
      <spec name="zzz">
      </spec>
    </root>
    Mon script devra pouvoir effectuer différentes actions sur ce XML : ajouter un noeud "spec", ajouter un noeud "ses", supprimer un noeud "ses", modifier les valeurs d'un noeud "ses".

    J'ai testé quelques modules Perl (DOM, Parser, Writer, Simple), mais à chaque fois il faut parser et réécrire le fichier en entier. N'existe pas un module plus adapté à ce que je veux faire ?

    Merci d'avance

    Pierrot

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Je ne comprend pas ? Soit ce fichier est un fichier de config et dans ce cas on le lit une fois au lancement du programme et on l'écrit une fois à la fin, soit c'est un fichier que tu veux manipuler et alors tu l'ouvre, tu le parses, tu fais toutes les modifications que tu veux puis tu le réécris.
    Quel est le problème avec cette approche ? Tu as besoin que les modifications du fichiers soit retranscrite immédiatement parce qu'une autre appli est en train de l'utiliser ?
    (Par ailleurs il parait que XML::Twig est très bien aussi)

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Je trouvais ça bête de parser le fichier en entier au début de mon script, car en fait je vais avoir plusieurs dizaines voire centaines de lignes "ses", et je vais devoir parser le fichier complet juste pour en ajouter, modifier ou supprimer une ? Ca ne risque pas de poser de problème au niveau mémoire ? J'ai aussi lu que Twig est performant pour les gros fichiers, je vais me renseigner là-dessus.

    J'ai aussi une autre appli qui consulte ce fichier mais j'ai une sémaphore système pour gérer l'accès concurrent, tant que les modifications sont rapides ça ne posera pas de problème.

    En fait ce fichier permet de faire le lien entre deux applis : l'une génére des données, et les décrit dans le XML, l'autre consulte le XML, récupère les fichiers, et met à jour le XML (champs state). Peut-être n'ai pas opté pour la bonne solution ? Le XML me paraissait simple à gérer dans plusieurs langages (ici Perl et Java).

    Merci de ton aide

  4. #4
    vic
    vic est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Points : 498
    Points
    498
    Par défaut
    Il y a déjà des modules très bien pour gérer le XML, cf

    (Il y en a aussi en Java d'ailleurs ne réinvente pas la roue 2 fois ..)

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Un fichier de centaines de lignes ne peut pas être considéré "gros"...
    Si tu as deux applis, agissent-elles simultanément où sont elles lancés à des moments différents ?
    Si elles fonctionnent simultanément, je ne pense pas que le XML soit une bonne solution (du moins pas utilisé comme tu le fais).

    --
    Jedaï

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par vic
    Il y a déjà des modules très bien pour gérer le XML, cf

    (Il y en a aussi en Java d'ailleurs ne réinvente pas la roue 2 fois ..)
    Merci, j'avais déjà regardé sur CPAN ;-) Je les trouvais un peu compliqué c'est tout mais Twig à l'air bien pratique.

    Citation Envoyé par Jedai
    Un fichier de centaines de lignes ne peut pas être considéré "gros"...
    Si tu as deux applis, agissent-elles simultanément où sont elles lancés à des moments différents ?
    Si elles fonctionnent simultanément, je ne pense pas que le XML soit une bonne solution (du moins pas utilisé comme tu le fais).

    --
    Jedaï
    En fait, une première appli aura un comportement aléatoire, c'est-à-dire que dès qu'un action est finie elle va générer des fichiers et écrire dans le XML. La seconde sera périodique (toutes les nuits à priori) et viendra consulter le XML voir si des fichiers ont été générés, et si oui les récupérer.
    Les applis ne tournent pas sur les mêmes machines, et je ne peux rien installer de gros (genre BD) sur la machine sur laquelle tourne la première appli. De plus, cette machine peut être déconnectée du réseau, elle ne peux donc pas contacter la machine ou tourne la seconde appli ! (enfin si elle pourrait, mais je dois limiter au maximum la charge que j'utilise ici, la machine sert à autre chose...)

    En gros je suis obligé de passer par un fichier je pense (la seconde appli peut faire du ftp ou du rsh pour se connecter à la machine).

    Je ne vois pas d'autres idées !

Discussions similaires

  1. conseils de modules pour traiter des fichiers XML
    Par Jasmine80 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2015, 12h40
  2. Réponses: 0
    Dernier message: 24/01/2014, 00h37
  3. Quels modules Perl pour gérer les documents XML ?
    Par djibril dans le forum Modules
    Réponses: 8
    Dernier message: 02/12/2010, 23h54
  4. Cherche librairie pour gérer un fichier XML (pas un parser)
    Par batataw dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 20/10/2007, 23h18
  5. [SimpleXML] Comment faire pour transformer un fichier XML en PHP ?
    Par magic8392 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/09/2005, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo