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 :

[debutant] Generation de Xml


Sujet :

Modules Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 24
    Points : 33
    Points
    33
    Par défaut [debutant] Generation de Xml
    Bonjour a tous,

    C est mon premier post ici , et je suis plutot débutant alors soyez indulgent avec moi Svp

    Je vous expose mon probleme ( si c en est vraiment un pour vous ) :

    Voila je travaille actuellement sur un projet qui consiste a créer un fichier Xml a partir de fichiers texte

    J ai réussi a créer la DTD correspondante , maintenant je dois generer mon fichier Xml

    J ai vu qu il existait plusieurs module pour ça ( XML::Writer SAX::Writer Twig ou un truc comme ça , il y en surement d autres )

    j ai donc commencé a créer un pti bout de code en Perl en utilisant le XML::writer . Mon idée est de traiter mon fichier texte puis d utilser les fonctions de Writer pour creér les balises Xml et tout ca .

    Ce que je ne comprends pas c est que je ne vois pas l interet de Writer , alors qu'a la place je pourrai tres bien faire un "print " en placant/ouvrant/fermant "manuellement" les balises qui vont bien . La j avoue que writer ne m avance pas a grand chose , mais je pense que vous allez me démentir !

    De plus il y a les balise ou les attributs obligatoire , ou qui n apparaissent pas ou qui peuvent apparaitre plusieurs fois, est ce que je vais etre obligé de mettre des if/then/else un peu partout dans mon perl pour gerer ça , ou est ce qu il y a des fonctions de Writer ( ou d autre modules ) que j ignore ??


    Ensuite je vois qu apparement Writer est "DOM" , et qu il y a d autres generateurs Xml qui sont soi disant en "SAX". Je ne comprends pas non plus , il me semblait que le DOM et le SAX etait des methodes pour parser un document Xml formé , or la le but est de créer le doc XML ! il n y a donc pas de structure xml existante .. comment un Writer quelcquonque peut il est SAX ou DOM ??

    J ai l impression que ce n est pas la bonne maniere que j utilise . Je me demande aussi si je peux utiliser ma DTD comme entrée ? C est a dire crée une sorte d arbre "virtuel" en memoire correspondant a ma DTD , et puis la remplir au fur et a mesure que je parcoure mon fichier texte , puis tout "recracher" avec XML::Writer ou autre ?

    Enfin ma question finale est , quelle est la bonne maniere pour créer un Xml a partir d un fichier Texte ?? Quels sont les bon modules ??

    Merci de vos réponses eclairées

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    salut, et bienvenue

    Pour generer ton XML, mieux vaut utiliser un module genre XML::Writer car il va te generer un XML bien formé à coup sure, aussi bien au niveau des balises que de l'encodage du text (genre echapper les "<" par exemple), et l'indentation.

    Pour ce qui est du DOM/SAX effectivement ca n'a rien à voir avec la generation du XML mais son parsing. XML::Writer ne fait que streamer dans un fichier avec des regles d'indentation et d'encodage, il n'a aucune idée de la structure du XML qu'il genere (mis à part l'imbrication des tags).

    Pour genrer ton XML je pense que tu a fais le bon choix: traiter ton texte en perl puis generer le XML (bien formé grace à XML::Writer).
    Tu peux ensuite verifier la validitée de ton XML par rapport à ta DTD avec d'autres modules.

    Je ne connais pas de modules permettant de genrer directement du XML valide par rapport à une DTD, mais ca existe peut etre (sans doute!)

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Rien à rajouter des propos de popos
    tout est dit clairement

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 24
    Points : 33
    Points
    33
    Par défaut
    Ok merci bien !

    Je pense que je vais créer une structure de tableau de Hash imbriqués , coller mes infos de mon fichier texte dedans et parcourir cette structure en crachant tout ça dans mon XML .

    Je vais voir s il y a pas des modules pour parser ma DTD et creer cette structure automatiquement sinon je le ferai a la main .

    Je pensai que Writer faisait un peu tout ça , si par hasard quelqu un connait les bon modules qui peuvent m aider , n hesitez pas !

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    regarde sur le CPAN, http://search.cpan.org/search?query=xml+dtd&mode=all
    Il y a des modules DTD et xml.
    Je ne les ai jamais utilisé, mais peut etre qu'ils t'aideront, si oui, une soluce sur le forum serait sympa.
    Sinon à quoi ressemble ton DTD, peux tu nous le montrer (DTD + fichier xml qui va avec).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    si tu compte passer par une hash alors essai aussi les XML::Simple
    Ce module sert à passer du XML à une structure perl et inversement.
    Le probleme est que ce module est souvent, paradoxalement, trop complexe ou trop simple à la fois...
    Mais il y en a quelques autres modules qui font le meme genre de choses sur CPAN

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 24
    Points : 33
    Points
    33
    Par défaut
    Merci de voius interesser a mon cas

    Voila une de mes DTD ( j ai plusieurs types de fichiers texte a xihèmèliser ) , j ai modifié le nom des balises

    <?xml version="1.0" encoding="UTF-8"?>
    <!ELEMENT momo (toto)+>
    <!ELEMENT toto (date_1,date_debut,date_fin,titi,tutu,riri,gloglo,popo,commentaire*,popol)>
    <!ATTLIST toto identifiant CDATA #REQUIRED>
    <!ELEMENT date_1 (#PCDATA)>
    <!ATTLIST date_1 format CDATA #FIXED "aaaa-mm-jj hh:mm:ss">
    <!ELEMENT date_debut (#PCDATA)>
    <!ATTLIST date_debut format CDATA #FIXED "aaaa-mm-jj hh:mm:ss">
    <!ELEMENT date_fin (#PCDATA)>
    <!ATTLIST date_fin format CDATA #FIXED "aaaa-mm-jj hh:mm:ss">
    <!ELEMENT titi (#PCDATA)>
    <!ATTLIST titi unite CDATA #FIXED "Mo">
    <!ELEMENT tutu (#PCDATA)>
    <!ATTLIST tutu unite CDATA #FIXED "Mo">
    <!ELEMENT riri (#PCDATA)>
    <!ELEMENT gloglo (#PCDATA)>
    <!ELEMENT popo (#PCDATA)>
    <!ELEMENT commentaire (#PCDATA)>
    <!ELEMENT popol (#PCDATA)>
    un exemple de fichier XMl

    <?xml version="1.0" encoding="windows-1250"?>
    <!DOCTYPE resultat SYSTEM "resultat.dtd">
    <momo>
    <toto identifiant="BDD_MYPBGBCK">
    <date_1 format="aaaa-mm-jj hh:mm:ss">2006-07-10 03:17:17</date_1>
    <date_debut format="aaaa-mm-jj hh:mm:ss">2006-07-10 03:17:17</date_debut>
    <date_fin format="aaaa-mm-jj hh:mm:ss">2006-07-10 04:26:11</date_fin>
    <titi unite="Mo">10000</titi>
    <tutu unite="Mo"></tutu>
    <ririr>1</ririr>
    <gloglo>truc_bidon</gloglo>
    <popo></popo>
    <commentaire></commentaire>
    <popol>OK</popol>
    </backup>

    [ ... ]

    </momo>
    Cette DTD est assez simple, mais j en ai une autre qui est plus compliquée et eventuellement peut etre d autre a l avenir bien plus complexes.

    sinon je pense avoir trouvé le module qui va bien :
    XML::Structured , apparement crée une Data structure ( tableaux de hash ) a partir d une DTD , et aussi on peut créer generer xml a partir de cette structure .

    Quoi qu il en soit , Je vous tiendrai au courant de me peregrinations

Discussions similaires

  1. [debutant] delphi et xml
    Par vodasan dans le forum Delphi
    Réponses: 2
    Dernier message: 22/11/2006, 01h11
  2. [debutant] génerer fichier XML
    Par zoubla dans le forum MFC
    Réponses: 7
    Dernier message: 27/10/2006, 11h21
  3. [XML][WXS] génération doc XML ?
    Par ghohm dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 06/07/2006, 12h15
  4. Réponses: 2
    Dernier message: 06/07/2006, 08h47
  5. XML et PHP - Debutant - Generation XML en php
    Par FiSh MoOn dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 04/11/2005, 00h39

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