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:Twig : Supprimer ou modifier des attributs d'un fichier xml


Sujet :

Modules Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Points : 16
    Points
    16
    Par défaut XML:Twig : Supprimer ou modifier des attributs d'un fichier xml
    Bonjour,

    je cherche désespérément à modifier ou supprimer des attributs d'un fichier xml mais je n'y arrive pas. Ce qu'il me faudrait en fait, c'est à la lecture fichier aller modifier (ou supprimer) certains attributs d'une balise afin d'écrire le fichier résultat. J'arrive à écrire mon fichier en sortie mais les attributs ne sont pas modifiés. Pouvez-vous m'aider svp?
    Ci-dessous mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #!/usr/bin/perl
     
    use Carp;
    use warnings;
    use XML::Twig;
    #use XML::LibXML;
    use File::Temp qw(tempfile tempdir);
    use Getopt::Long;
     
    my ($repertoire, $fichier) = ();
    GetOptions( 'fichier|i=s' => \$fichier, 'repertoire|d=s' => \$repertoire);
     
    if(not defined $fichier or not defined $repertoire) {
      die "Fichier source ou répertoire de travail manquant!";
    }
    creation fichier resultat avec non unique
    my($fh, $filename) = tempfile( "FILEOUT"."_". 'XXXXXXXX', SUFFIX => '.xml', DIR => $repertoire );
    binmode $fh, ':encoding(UTF-8)';#UTF8 format
     
    # Lecture
    my $twig = XML::Twig->new( pretty_print => 'indented' );
    $twig->parsefile($fichier);
    my $twig_SHIPMENT_EXPECTED_INFORMATION = $twig->root->first_child('ENVELOPPE');
    removeAttribute($twig_ENVELOPPE, "xmlns="http://www.secondsiteweb.com/WMSXMLMessages"");
    =head1
    Je n'arrive pas à supprimer ou modifier un attribut en particulier dans mon fichier xml
    quelqu'un pourrait il m'aider?
    exemple de fichier xml :
     
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ENVELOPPE xmlns:premier="http://www.siteweb/XMLDataTypes" xmlns="http://www.secondsiteweb.com/WMSXMLMessages" xmlns:troisieme="http://www.troisiemesiteweb.com/GateDataTypes" xmlns:quatrieme="http://www.w3.org/2001/XMLSchema-instance">
    	<SequenceId>1</SequenceId>
    	<DateDuJour>25</DateDuJour>
    </ENVELOPPE>
     
    J'aimerai avoir un fichier comme suit : 
     
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ENVELOPPE xmlns:premier="http://www.siteweb/XMLDataTypes" xmlns:ajout="http://www.secondsiteweb.com/WMSXMLMessages" xmlns:troisieme="http://www.troisiemesiteweb.com/GateDataTypes" xmlns:quatrieme="http://www.w3.org/2001/XMLSchema-instance">
    	<SequenceId>1</SequenceId>
    	<DateDuJour>25</DateDuJour>
    </ENVELOPPE>
     
    ou supprimer tout simplement le :  xmlns="http://www.secondsiteweb.com/WMSXMLMessages"
     
    =cut
    $twig->print($fh);
    close $fh;

  2. #2
    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 : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    Dans la documentation du module, il y a deux méthodes permettant de supprimer ou rajouter un nouvel attribut dans une balise (set_att et del_att).

    Avec votre code, voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # Suppression de l'attribut xmlns
    $twig_SHIPMENT_EXPECTED_INFORMATION->del_att( 'xmlns' );
    # Création de l'attribut xmlns:ajout
    $twig_SHIPMENT_EXPECTED_INFORMATION->set_att( 'xmlns:ajout' => 'http://www.secondsiteweb.com/WMSXMLMessages');

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Points : 16
    Points
    16
    Par défaut
    D'accord, je vois. Merci djibril. J'arrivais pas à trouver celle là. ton exemple fonctionne très bien. Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] changer les valeurs des attributs d'un fichier XML
    Par nonna dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 21/03/2008, 11h56
  2. [XPATH] changer des attributs d'un fichier Xml + code Java
    Par RouRa22 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 07/03/2008, 09h55
  3. Réponses: 1
    Dernier message: 22/01/2008, 17h24
  4. comment je pourrais modifier un attribut dans un fichier xml
    Par ryoussef19 dans le forum Visual C++
    Réponses: 6
    Dernier message: 24/08/2007, 14h16

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